gpt4 book ai didi

c - 如何正确使用有关字符串数组的 isalpha 函数?

转载 作者:行者123 更新时间:2023-11-30 16:15:00 25 4
gpt4 key购买 nike

我正在尝试使用 isaplha() 函数来检查每个字符串的每个字符,以确定它是否是字母。但由于某种原因它不起作用。尽管 if 语句有参数,程序总是进入 printf() 函数。看起来代码一切正常:

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define N 5

int main(void)
{
char string[N][50];
int i,j;

printf("Enter an array of N strings:\n");

for(i=0;i<N;i++){
gets(string[i]);
}

for(i=0;i<N;i++){
for(j=0;j<50;j++){
if(isalpha(string[i][j])){
printf("\nIt should not work with numbers");
}
}
}

return 0;
}

最佳答案

给你。

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

#define N 5
#define M 50

int main(void)
{
char string[N][M];

printf( "Enter an array of %d strings:\n", N );

for ( int i = 0; i < N; i++ )
{
fgets( string[i], sizeof( string[i] ), stdin );
string[i][strcspn( string[i], "\n" )] = '\0';
}

for ( int i = 0; i < N; i++ )
{
const char *p = string[i];

while ( *p != '\0' && !isalpha( ( unsigned char ) *p ) ) ++p;

if ( *p != '\0') printf( "\n\"%s\" should not work with numbers", string[i] );
}

return 0;
}

程序输出可能如下所示

Enter an array of 5 strings:

12345
123A5
87654
8765B
Hello

"123A5" should not work with numbers
"8765B" should not work with numbers
"Hello" should not work with numbers

请考虑到函数 gets 不是标准 C 函数,即 C 标准不再支持它。

还有这张支票

        if(isalpha(string[i][j])){
printf("\nIt should not work with numbers");
}

必须放置在内部循环之外,该循环必须仅检查字符串的字符而不是整个字符数组。

关于c - 如何正确使用有关字符串数组的 isalpha 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57311271/

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