我试图在简单的 C 应用程序中将输入限制为仅数字,但是我收到警告。我怀疑这与以下部分有关。版本一是正确的做事方式吗?谢谢。
for(i=0;i< strlen(string); i++)
{
if( string[i]<"0" || string[i]>"9")
valid= FALSE;
}
或者
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);
}
为了澄清,我必须按照我正在做的练习给出的方式进行检查。谢谢。
最佳答案
版本一是完全错误的。它进行指针比较,因为字符串文字会衰减为指针,并且字符会提升为 int
.
版本二很接近,尽管你应该真正使用 isdigit
来自<ctype.h>
.
顺便说一句,你知道i < strlen(string)
吗?在循环终止条件中将线性时间算法变成二次时间算法?
关于C 只输入小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8022614/