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

问题描述:

我在(C)编程一个绝对的初学者,我必须找到以下问题的解决方案:检查输入的字符串是否包含了特定的字符 - >浮点数

我要解析命令行参数浮动在结构中。这很好地使用argc,argvatof。但有没有办法检查用户是否在他的输入中使用了有效的“浮点字符”(0-9.)?

atof仅返回其错误0.0当解析字符串的开头没有任何数字时。如果用户写例如./programname 4,5atof仍然会写4到我的浮...

我会检查每一个提交字符,此外,设置一个计数器检查,用户是否使用多于一个. 。我怎样才能有效地实现这一点?编辑: 谢谢你vor你的答案!我的程序仅用于将由09.的整数组成的字符串转换。我忘了提及!我现在尝试编写一个函数,它将输入字符串与包含有效字符的字符串进行比较,使用for和while while循环。正如我只想检查第二和argv(argv[1]argv[2])的第三argmunent,我用环的第二外其余的以实现...

+0

什么' “-3”'' “1E-3”'之类的?因为他们不只是由数字和'.'组成,他们应该被拒绝吗? – 2014-12-03 15:39:33

您可以使用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

+0

但是,这将愉快地转换'“1e-3”'。不知道这是否是有意的。 – 2014-12-03 15:38:36

+0

谢谢你的回答!我的程序仅用于转换由从'0'到'9'和'.'的整数组成的字符串。我忘了提及!我现在尝试编写一个函数,它将输入字符串与包含有效字符的字符串进行比较,使用for和while while循环。因为我只想检查argv('argv [1]'和'argv [2]')的第二个和第三个argmunent,我使用第二个for循环以外的循环来实现... – ljagg 2014-12-04 10:37:10

+0

然后我建议手动检查格式。或者是一个正则表达式,但是你会遇到两个问题。 – rubenvb 2014-12-04 10:39:25