C-分段错误
最近,我开始研究内置函数,但出现了一个错误,即: 为什么我的程序出现了分段错误C-分段错误,c,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
#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;
}
#包括
#包括
int main()
{
char-str[50];
int n;
printf(“谁是你最好的朋友?”);
scanf(“%s”,str);
n=isalpha(str);
如果(n!=0)
{
printf(“是Alpha”);
}
其他的
{
printf(“无效输入”);
}
返回0;
}
请帮帮我…s原型是
int isalpha( int ch );
参数的类型为int
。但是您要传递的是char*
类型,因为str
是字符数组
也许你的意思是
unsigned char str;
scanf("%c",&str);
isalpha()
如果参数不是字母,则返回0
为了避免溢出,您可以将scanf()
修改为
scanf("%49s",str);
使用一个字符存储\0
字符
看看这篇文章
编辑:
isalpha()
的参数不应该是char
。如前所述,它必须至少是无符号字符
。感谢您指出这一点。使用所有警告和调试信息编译代码:gcc-Wall-Wextra-g
with。改进您的代码以避免收到警告。然后还要阅读,尤其是您正在使用的每个函数(因为您错误地使用了它们)的开头:isalpha
将char
作为参数,而不是char
的数组。此外,此代码与递归无关。即使使用char
,您也需要isalpha((unsigned char)ch)
来避免未定义的行为。感谢您指出。已编辑。即使在scanf声明中进行了更正,但仍然不能满足我的输出。因为当我输入“gh23s”时,给我输出的程序“是Alpha”,但我应该得到“无效输入”…@ShubhamKumarSingh您是否修复了对isalpha
的调用?怎么做?对不起,我没听懂你的话…你能给我澄清一下吗。。。