2011-12-11 30 views
1

我需要用C语言编写一个小程序,它只接收数字。 作为这个程序的一部分,我需要创建一个验证,用户输入将只是数字,否则程序应该显示错误。C中的数字验证

我已阅读关于isdigit()函数,但它不适用于我。你有其他解决方案吗?

hoursminutes是用户输入,并定义为整数。

if (!isdigit(hours) || !isdigit(minutes)) 
{ 
    printf("Invalid Time\n"); 
} 
+1

请告诉我'hours'和'minutes' – KoKuToru

+0

如果变量定义为整数,他们总是编号 – JJJ

+2

功课.... ... –

回答

2

您需要检查输入的每一个字符,以确定它们是否是数字或不:

for(int i = 0; i < strlen(hours); i++) 
{ 
    if(!isDigit(hours[i])) { printf("invalid time\n"); break; } 
} 
+1

使用的strlen在循环在哪里字符串不会改变?这是过早pessimization –

+0

体面的编译器肯定会优化它 – stdcall

2

isdigit是只检查单个字符;我怀疑你在看字符串(虽然这在你的问题中不清楚)。我不知道是否有库函数会为你做,但你可以使用类似功能:

int isnumeric(char *p) 
{ 
    while (*p) 
    { 
     if (! isdigit(p)) 
      return 0; 
     p++; 
    } 
    return 1; 
} 
+0

谢谢你们!我现在已经解决了这个问题。 – user1071211

0

ISDIGIT(X)返回true,如果(0 < = X < = 9)其他单词X是一个数字,不仅是一个数字。

你想要的是读取输入到一个字符串,并检查这个字符串是否是一个数字,然后使用atoi(字符串)将其转换为数字。

好运(?:?