我正在尝试将输入限制为仅在简单的C应用程序中的数字,但是我收到警告。我怀疑它与以下细分市场有关。第一版是正确的做事方式吗?谢谢。
for(i=0;i< strlen(string); i++)
{
if( string[i]<"0" || string[i]>"9")
valid= FALSE;
}
OR
for(i=0;i< strlen(string); i++)
{
if( string[i]<'0' || string[i]>'9')
valid= FALSE;
}
我的其余代码是
void main()
{
char number[4];
printf("Please enter a decimal number: ");
gets(number);
if (numeric(number))
printf("'%s' is a valid number\n", number);
else
printf("'%s' is an invalid number\n", number);
}
为了澄清我必须按照我正在做的练习按照给出的方式进行检查。谢谢。
答案 0 :(得分:1)
版本1完全错误。它进行指针比较,因为字符串文字衰减为指针,字符被提升为int
。
第二版很接近,但您应该使用isdigit
中的<ctype.h>
。
顺便说一下,您是否知道循环终止条件中的i < strlen(string)
会将线性时间算法转换为二次时间算法?
答案 1 :(得分:0)
您不能只使用if (scanf ("%d", &n)==1)
或致电strtol
吗?