如果我已将大小设置为20
,如何找到用户输入的数字 strlen
只会让我20岁
如何将其放入else if
循环中的for
这是一个检查用户输入的10位是否有效的程序
#include<stdio.h>
int validateString(char *inStr);
int main()
{
char stringInput[20];
printf("Please enter a 10 digit phone number: ");
scanf("%s",stringInput);
if (validateString(stringInput)== 1)
{
printf("%s is a valid phone number.\n",stringInput);
}
else if (validateString(stringInput)== 0)
{
printf("%s is not a valid phone number.\n",stringInput);
}
int validateString(char *inStr)
{
int i;
for (i=0;i<length;i++)
{
if(!(inStr[i] == '0' ||
inStr[i] == '1' ||
inStr[i] == '2' ||
inStr[i] == '3' ||
inStr[i] == '4' ||
inStr[i] == '5' ||
inStr[i] == '6' ||
inStr[i] == '7' ||
inStr[i] == '8' ||
inStr[i] == '9' ||
inStr[i] == ' ' ))
{
return 0;
}
else if ( //the input string is longer than 10 or less than 10)
{
return 0;
}
else
{
return 1;
}
}
}
答案 0 :(得分:0)
strlen
应该可以正常工作以获得长度(位数),您只需要确保该行的结尾以0结尾。如果输入在末尾附加回车符或换行符,然后只用0替换这些值。
int main ()
{
char x[20];
x[0] = '1';
x[1] = '2';
x[2] = '\n';
x[3] = 0;
printf("%d\n", strlen(x));
}
以上代码显示3
。
如果我要将索引2替换为0,那么我将得到正确的2的计数。
strlen
没有给出数组的总长度,它给出了以0结尾的字符串的长度。
你也不需要检查每个角色,你可以这样做:
if(!(inStr[i] >= '0' && inStr[i] <= '9') || inStr[1] != ' ')
{
return 0;
}
我还会稍微分解一下功能性:
int validDigits(char *inStr)
{
for (int i=0;i<strlen(inStr);i++)
{
if(!(inStr[i] >= '0' && inStr[i] <= '9') || inStr[1] != ' ')
{
return 0;
}
}
return 1;
}
int validateString(char *inStr)
{
return (validDigits(inStr) && strlen(inStr) == 10);
}
但是,请记住将任何回车符和换行符(10和13)替换为零,否则strlen将返回比预期更高的数字。