我是(c)编程的绝对初学者,我必须找到解决以下问题的方法:
我必须将命令行参数解析为结构中的浮点数。这可以很好地使用argc
,argv
和atof
。但有没有办法检查,用户是否使用了有效的"浮动字符" (0-9
和.
)在他的输入中?
atof
仅在要解析的字符串开头没有任何数字时才返回错误0.0
。如果用户写了例如./programname 4,5
,atof
仍然会将4
写入我的浮动...
我必须检查每个提交的字符,另外,设置一个计数器来检查用户是否使用了多个.
。我怎样才能有效地实现这一目标?
编辑:
谢谢你的答案!我的程序仅用于转换由0
到9
和.
的整数组成的字符串。我忘了提到那个!我现在尝试编写一个函数,它使用一个for和一个while循环将输入字符串与包含有效字符的字符串进行比较。因为我只想检查argv(argv[1]
和argv[2]
)的第二个和第三个argmunent,我在其余部分之外使用第二个for循环来实现...
答案 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);
}