怎么将字符串转换为数字

如何将字符串转换为数字
如下所示:
1,“123”——>123;
2,“123.555”——>123.555;

如何用一个函数同时实现上面的两种情况?
我知道atoi只能完成第1种情况,atof只能完成第2种情况,
c

------解决方案--------------------
遍历一遍字符串,发现了小数点,用atof,否则用atoi
------解决方案--------------------
楼上有道理~~
------解决方案--------------------
1,“123”——>123;用atof后是什么?
------解决方案--------------------
用sprintf()和sscanf()不是更好吗
------解决方案--------------------
用语法的话就要两个,一个函数的话。你自己要自定义一个函数!
------解决方案--------------------
自己写一个 怎么将字符串转换为数字
------解决方案--------------------
遍历字符串,然后if 判断
------解决方案--------------------
float value;
const char* str = "123.55";
sscanf(str,"%f",&value);

说实话我觉得你不必纠结value最后到底是不是整数,如果你预期可能会溢出那么就用double。最后是不是整数只是取决于你要怎么使用它而已。反正信息是没丢失的。

------解决方案--------------------
先用if判断再用函数
------解决方案--------------------
main()
{
    char *a="12345.111111";
    double ad=0.0;
    int    ai=0;
    int i;
    int j=0;
    
    for(i=0;i<strlen(a);i++)
    {
       if(a[i]=='.')
       {
          printf("%f\n",atof(a));
          j++;
          break;
        }
    }
    
    if(j==0)
    {
          printf("%d\n",atoi(a));
    }
}






char *a="你自己写个数" ,然后装进去,编译,运行,就可以看到结果。
------解决方案--------------------
果断sscanf
------解决方案--------------------
int i = type_convert<int>("123");
double j = type_convert<double>("123.555");

template<class Out_Type, class In_Type>
Out_Type type_convert(const In_Type& T)
{
stringstream ss;
ss<<T;
Out_Type result;
ss>>result;
return result;
}

------解决方案--------------------
引用:
用sprintf()和sscanf()不是更好吗

++这个方法也不错,
不过需要首先判断该字符串表示的是整数还是浮点数。
------解决方案--------------------
人家要求的是从字符串转成数字,一看回帖一大半都说的是从数字转成字符串,哈哈,你们这帮人啊,眼睛让驴给踢啦。
两种情况都用 atof 难道会有什么问题吗?
------解决方案--------------------
char s1[]="123";
char s2[]="123.555";