我希望用户输入一个字符串,然后只保留字母。我的问题是在第二个while循环中的函数str,它将字母复制到另一个字符串。它甚至不打印j!我真的不知道为什么会这样。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void str(char *s)
{
int i=0,j=0;
int sum=0;
char *outstr;
while(s[i]!='\0')
{
if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z')
sum++;
i++;
}
i=0;
outstr=(char*)malloc(sum*sizeof(char));
while(s[i]!='\0')
{
if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z')
{
strcpy(outstr[j],s[i]);
j++;
printf("\nj=%d",j);
}
printf("\ni=%d",i);
i++;
}
printf("%s",outstr);
}
int main()
{
char s[650];
int n;
gets(s);
str(s);
return 0;
}
答案 0 :(得分:2)
你不需要strcpy函数:
strcpy(outstr[j],s[i]);
但
outstr[j] = s[i];
就够了。并且还要改变
s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z'
使用:
(s[i]>='a' && s[i]<='z') || (s[i]>='A' && s[i]<='Z')
答案 1 :(得分:1)
您应尽可能使用标准c库例程。例如,您可以使用该功能 isalpha 检查字符是否为字母。