检查输入字符串是否包含特定字符 - >浮点数

时间:2014-12-03 15:26:26

标签: c string parsing floating-point-conversion

我是(c)编程的绝对初学者,我必须找到解决以下问题的方法:

我必须将命令行参数解析为结构中的浮点数。这可以很好地使用argcargvatof。但有没有办法检查,用户是否使用了有效的"浮动字符" (0-9.)在他的输入中?

atof仅在要解析的字符串开头没有任何数字时才返回错误0.0。如果用户写了例如./programname 4,5atof仍然会将4写入我的浮动...

我必须检查每个提交的字符,另外,设置一个计数器来检查用户是否使用了多个.。我怎样才能有效地实现这一目标?

编辑: 谢谢你的答案!我的程序仅用于转换由09.的整数组成的字符串。我忘了提到那个!我现在尝试编写一个函数,它使用一个for和一个while循环将输入字符串与包含有效字符的字符串进行比较。因为我只想检查argv(argv[1]argv[2])的第二个和第三个argmunent,我在其余部分之外使用第二个for循环来实现...

1 个答案:

答案 0 :(得分:0)

您可以使用sscanf和虚拟字符来查看是否已转换完整字符串,如this answer中所示:

#include <stdlib.h>
#include <stdio.h>

int main(int argc, char* argv[])
{
  char dummy;
  float f;
  if(sscanf(argv[1], "%f%c", &f,&dummy) != 1)
    printf("Input error.\n");
  else
    printf("%f\n", f);
}

Live demo here