将字符串转换为double

时间:2010-11-29 22:02:52

标签: c double

我正在寻找一种从用户那里获得浮点输入的方法。

我的方法是使用自制的gettrn函数并将其插入到另一个将字符串转换为double的函数中。

我的安全获取字符串:

void safeGetString(char arr[], int limit){
    int c, i;
    i = 0;
    c = getchar();
    while (c != '\n'){
        if (i < limit -1){
            arr[i] = c;
            i++;
        }
        c = getchar();
    }
    arr[i] = '\0';
}

写这个get_double函数的最佳方法是什么?

4 个答案:

答案 0 :(得分:12)

尝试使用strtod函数:

char *end;
double num = strtod(arr, &end);

结束将指向最后处理的char。如果您不关心,可以将秒设置为NULL。或者您可以使用atofatof(str)相当于strtod(str, (char **)NULL)

但您应该关心,因为您可以检查输入是否格式错误:

if (*end != '\0')
  // Handle malformed input

答案 1 :(得分:4)

使用strtod,这就是它的用途。 fgets可以替换您的safeGetString功能。

答案 2 :(得分:3)

任何一个:

这些sscanf中提供了最强的验证,因为如果输入不能作为double加入,则其他两个返回0.0的有效double值,而sscanf()返回与输入成功匹配的格式说明符的数量。所以:

input_valid = (sscanf( arr, "%lf", value ) != 0 ) ;

答案 3 :(得分:2)

  1. 你为什么不使用fgets()
  2. 您正在寻找atof()
  3. (感谢R.在第1部分修复我的愚蠢建议)