c语言isalpha语法问题

来源:百度知道 编辑:UC知道 时间:2024/09/26 00:32:21
void fun(char str[])
{int i,j;
for(i=0,j=0;str[i];i++)
if(isalpha(str[i]))str[j++]=str[i];
str[i]='\0';
}
main()
{
char ss[80]="it is!";
fun(ss);
printf("%s\n",ss);
}
(715422575) 09:01:13
isalpha判断是否是字母,那么应该输出itis
(715422575) 09:01:29
可是答案是itiss!
(715422575) 09:02:05
空格符号不是字母isalpha判断语句就跳出
(715422575) 09:02:45
!也不是字母isalpha判断语句就跳出

isalpha确实是判断字母的,但是这个char数组到最后的时候就是itiss!所以输出了。最后ss【4】是s,你又没有修改这个值,最后的!也没有修改,为什么不输出呢?
你最后的str[i]='\0'是没必要的,这个时候i的值已经到了‘\0’的位置了,你应该用str[j]才对

if(isalpha(str[i]))str[j++]=str[i];
str[i]='\0'//这里错了,应该是str[j]='\0'