我希望用户输入一个字符串,然后只保留字母。我的问题是函数str在第二个while循环中,它从不将字母复制到另一个字符串中,它甚至不打印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;
}
最佳答案
你不需要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')