gpt4 book ai didi

c - 如何使迭代 isalpha 函数的函数起作用?

转载 作者:行者123 更新时间:2023-12-02 08:25:07 25 4
gpt4 key购买 nike

我有一个程序,它使用 isalpha 比较字符串中的每个元素。我输入一个字符串,它调用函数来循环遍历数组并检查所有字符是否都是字母。如果是,则打印 true,否则打印 false。我的问题是我似乎无法让它正常工作。每次都只会返回 false。

#include <stdio.h>
#include <string.h>

int isAlpha(char string[]);

int main()
{
char str[100];
int bool;

printf("Enter a string to check: \n");
fgets(str, 100, stdin);

bool = isAlpha(str);
if(bool != 0)
{
printf("True\n");
}
else if(bool == 0)
{
printf("False\n");
}
return 0;
}

int isAlpha(char string[])
{
int i, check, len = strlen(string);
for(i = 0; i < len; i++)
{
if(isalpha(string[i]))
{
check = 1;
}
else
{
check = 0;
break;
}
}
return check;
}

最佳答案

如果用户输入abc,则fgets返回的字符串将为abc\n\0。换句话说,换行符总是无法通过 isalpha 测试。您可以通过将字符串长度减一来解决该问题。您还应该初始化 check 变量,因为循环体可能永远不会运行,例如如果用户按下 Enter 键而不输入任何内容。

int i, check = 0;
int len = strlen(string) - 1;
for(i = 0; i < len; i++)

正如 @ShadowRanger 在评论中指出的那样,C 中没有什么是简单的。为了绝对安全,您应该从字符串中删除换行符,如下所示

int i, check = 0;
string[strcspn(string, "\n")] = '\0';
int len = strlen(string);
for(i = 0; i < len; i++)

关于c - 如何使迭代 isalpha 函数的函数起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32919597/

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