gpt4 book ai didi

c - 即使我设置了数组的大小,如何找到输入字符串的长度

转载 作者:行者123 更新时间:2023-11-30 17:44:34 24 4
gpt4 key购买 nike

如果我已经将大小设置为 20,如何找到用户输入的数字数量

strlen 只会让我仍然 20

以及如何将其放入 for 循环中的 else if

这是一个检查用户输入的 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;
}
}

}

最佳答案

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 将返回比预期更高的数字。

关于c - 即使我设置了数组的大小,如何找到输入字符串的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19943544/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com