易百教程

字符串转换为数值

stdlib.h头文件具有以下可用于将字符串转换为数值的函数。
这些函数需要一个参数,参数是指向字符串的指针或类型为char的数组,其中包含表示数值的字符串。

函数 返回值
atof() 将字符串转换为double类型。
atoi() 将字符串转换为int类型。
atol() 将字符串转换为long类型。
atoll() 将字符串转换为long long类型。

对于所有四个函数,将忽略前导空格(isspace()返回true)。
除了不能构成数字值的那部分的值的字符之后的任何字符也将被忽略。

char value_str[] = "12.4";
double value = atof(value_str); // 将字符串转换为浮点数

以下函数将子字符串转换为浮点值。

函数 返回值
strtod() substring转换为double类型
strtof() substring转换为float类型。
strtold() substring转换为long double类型。

这些函数能识别INFINFINITYNAN
它们将识别具有或不具有十进制或十六进制形式的指数的浮点值。十六进制值必须以0x0X开头。
以下是如何将多个子字符串从单个字符串转换为double值:

double value = 0;
char str[] = "1.5 1.5 1.26";     // 要转换的字符串
char *pstr = str;                // 指向要转换的字符串的指针
char *ptr = NULL;                // 转换后指向字符位置的指针
while(true)
{
  value = strtod(pstr, &ptr);    // 从pstr开始转换
  if(pstr == ptr)                // 如果没有转换,则存储pstr ...
    break;                       // ...转换完成
  else
  {
    printf("  %f", value);       // 输出结果值
    pstr = ptr;                  // 存储下一次转换的开始
  }
}

strtoll()strtoul()strtoull()将子字符串分别转换为:long longunsigned longunsigned long long类型的值。