检查输入的字符串是否包含了特定的字符 - >浮点数
我在(C)编程一个绝对的初学者,我必须找到以下问题的解决方案:检查输入的字符串是否包含了特定的字符 - >浮点数
我要解析命令行参数浮动在结构中。这很好地使用argc
,argv
和atof
。但有没有办法检查用户是否在他的输入中使用了有效的“浮点字符”(0-9
和.
)?
atof
仅返回其错误0.0
当解析字符串的开头没有任何数字时。如果用户写例如./programname 4,5
,atof
仍然会写4
到我的浮...
我会检查每一个提交字符,此外,设置一个计数器检查,用户是否使用多于一个.
。我怎样才能有效地实现这一点?编辑: 谢谢你vor你的答案!我的程序仅用于将由0
到9
和.
的整数组成的字符串转换。我忘了提及!我现在尝试编写一个函数,它将输入字符串与包含有效字符的字符串进行比较,使用for和while while循环。正如我只想检查第二和argv(argv[1]
和argv[2]
)的第三argmunent,我用环的第二外其余的以实现...
您可以使用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);
}
但是,这将愉快地转换'“1e-3”'。不知道这是否是有意的。 – 2014-12-03 15:38:36
谢谢你的回答!我的程序仅用于转换由从'0'到'9'和'.'的整数组成的字符串。我忘了提及!我现在尝试编写一个函数,它将输入字符串与包含有效字符的字符串进行比较,使用for和while while循环。因为我只想检查argv('argv [1]'和'argv [2]')的第二个和第三个argmunent,我使用第二个for循环以外的循环来实现... – ljagg 2014-12-04 10:37:10
然后我建议手动检查格式。或者是一个正则表达式,但是你会遇到两个问题。 – rubenvb 2014-12-04 10:39:25
什么' “-3”'' “1E-3”'之类的?因为他们不只是由数字和'.'组成,他们应该被拒绝吗? – 2014-12-03 15:39:33