编写一个程序,该程序读取键盘上的两个字符串CH1和CH2,并消除CH2中也出现的所有CH1字母。
注意:不使用指针和strcpy。
您能告诉我为什么字符转换不正确吗?
#include <stdio.h>
#include <string.h>
int main()
{
char ch1[30], ch2[30], ch3[30];
int i, j, L1, L2, X;
printf("please enter ch1: ");
scanf("%s",ch1);
printf("please enter ch2 : ");
scanf("%s",ch2);
L1=strlen(ch1);
L2=strlen(ch2);
for(i=0;i<L1;i++)
X=0;
for(j=0;j<L2;j++){
if(ch1[i]==ch2[j]){
X=1;
ch1[i]=ch1[i+1];
}
}
printf("result : %s" , ch1);
}
最佳答案
#include <stdio.h>
#include <string.h>
int main()
{
char ch1[30], ch2[30], ch3[30];
int i, j, L1, L2, X, k;
printf("veuillez saisir ch1: \n");
scanf("%s",ch1);
printf("veuillez saisir ch2 : \n");
scanf("%s",ch2);
L1=strlen(ch1);
L2=strlen(ch2);
for(i=0;i<L1;i++)
for(j=0;j<L2;j++){
if(ch1[i]==ch2[j]){
for(k = i; k < L1 - 1; k++) {
ch1[k]=ch1[k+1];
}
i--;
L1--;
ch1[L1] = '\0';
for(k = j; k < L2 - 1; k++) {
ch2[k]=ch2[k+1];
}
L2--;
ch2[L2] = '\0';
break;
}
}
printf("Chaîne résultat : %s\n" , ch1);
return 0;
}
我基本上是在每次在ch2中找到一个char时都向下移动字符串。然后我将字符串终止为空,以便正确打印并将大小减小1。
关于c - 如何消除所有同时出现在ch2中的字母ch1(语言c),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43358989/