背景:
试图使用第三个字符数组来存储从第一个字符数组中分离取得的元音字母字符,
并将分离得到的字符添加复制至第二个字符数组中输出。
问题:
在输出时大多数时候意外出现了额外的‘@’符号,‘!’符号,及某些错误的字符。,想知道是什么原因……
#include<stdio.h>
#include<string.h>
char copy(char x[100],char y[100],int i,int j);
int main()
{
char str1[100],str2[100],str3[100];
int i,j,k=0;
printf("请输入第一个字符串:");
for(i=0;;i++)
{
scanf("%c",&str1[i]);
if(str1[i]=='a' || str1[i]=='e' || str1[i]=='i' || str1[i]=='o' || str1[i]=='u'
|| str1[i]=='A' || str1[i]=='E' || str1[i]=='I' || str1[i]=='O' || str1[i]=='U')
{
str3[k]=str1[i];
k++;
}
if(str1[i]=='\n')
break;
}
printf("\n请输入第二个字符串:");
for(j=0;;j++)
{
scanf("%c",&str2[j]);
if(str2[j]=='\n')
{
break;
}
}
copy(str3,str2,i,j);
return 0;
}
char copy(char x[100],char y[100],int i,int j)
{
int k;
printf("\n挑选并拼合后的字符串为:\n");
for(k=0;k<j;k++)
{
printf("%c",y[k]);
}
printf("\0");
for(k=0;k<i;k++)
{
printf("%c",x[k]);
}
printf("\0");
}
已尝试添加输出 \0 ,或使用getchar()吸收多余字符,仍不奏效。
想要摆平乱码,或者找到更简单的算法以解决查找特定字符并复制至其它字符串的问题也可。
for (j = 0;; j++)
{
scanf("%c", &str2[j]);
if (str2[j] == '\n')
{
break;
}
}
copy(str3, str2, k, j); //这里参数传错了
return 0;
}
可以试一下改成while循环用回车的ascll码判定输入结束,也就是每次输入结束你都敲一个回车