C分段故障错误

时间:2018-03-07 12:52:37

标签: c

最近我开始研究内置函数,但是出现了一个错误,那就是:

为什么我会为此程序分段错误

#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;
}

请帮帮我......

1 个答案:

答案 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指出这一点。