编写一个程序,该程序读取键盘上的两个字符串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/

10-10 17:24