最近我开始研究内置函数,但是出现了一个错误,那就是:
为什么我会为此程序分段错误
#include<stdio.h>
#include<ctype.h>
int main()
{
char str[50];
int n;
printf("Who is your best friend? ");
scanf("%s",str);
n=isalpha(str);
if(n!=0)
{
printf("Is Alpha");
}
else
{
printf("Invalid Input");
}
return 0;
}
请帮帮我......
答案 0 :(得分:4)
isalpha()
'的原型是
int isalpha( int ch );
参数类型为int
。但是您传递的是char *
类型,因为str
是一个字符数组。
也许你的意思是
unsigned char str;
scanf("%c",&str);
isalpha()
如果参数不则返回0
。
为避免溢出,您可以将scanf()
修改为
scanf("%49s",str);
一个字符用于存储\0
字符。
查看this帖子。
编辑:isalpha()
的论点不应该是char
。必须至少unsigned char
解释here。感谢melpomene指出这一点。