将字符串转换为double

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

我的方法是使用自制的getstrn函数并将其插入到另一个将字符串转换为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函数的最佳方法是什么?

尝试strtodfunction:

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

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

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

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

使用strtod ,这就是它的用途。 而且fgets可以替换你的safeGetString函数。

任何:

  • 关于strtod()
  • ATOF()
  • 的sscanf()

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

 input_valid = (sscanf( arr, "%lf", value ) != 0 ) ; 
  1. 你为什么不使用fgets()
  2. 你正在寻找atof()

(感谢R.在第1部分修复我的愚蠢建议)