从char中删除一封信并重新打印char

时间:2018-03-30 03:22:04

标签: c arrays string loops char

main(void)
{
 int p;
 char n[6]="apple";
 char n2[6]="happy";
 for(int i=0;i<6;i++)
     {
         for (int j=0;j<6;j++)
             {
                 if(n[i]==n2[j])
                      // I want n2[j] removed
                      printf("%c",n2[j]);
                      break;
             }
     }
}

我希望从char中删除n2 [j]。 例如:在这种情况下,n [0] = n2 [1],即 a = a 。我希望从单词中删除'a'。

1 个答案:

答案 0 :(得分:1)

这将打印要删除的char,并在n2 [j]之后将所有字符移动到n2,并将包含空终止符的空终止符包括在空字节终止符之后。字符串长度是在每个循环上测量的,因此您不会循环遍历第一个空终止符。 main()也应返回int。

#include <stdio.h>

int main(void)
{
    //char n[6] = "apple";
    //char n2[6] = "happy";
    char n[] = "abcdefghij";
    char n2[] = "a1b2c3d4e5f6g7h8i9";
    for (int i = 0; i < strlen(n); i++)     // You shouldn't loop the size of the array
                                            // but the size of the string, because
                                            // you wouldn't want to remove the null 
                                            // terminator
    {
        for (int j = 0; j < strlen(n2); j++) // Same here 
        {
            if (n[i] == n2[j])
            {
                printf("Removing char %c \n", n2[j]);
                memmove(&n2[j], &n2[j + 1], strlen(n2) - j);
            }
        }
    }
    printf("\nn2 = %s", n2);
    return 0;
}

如果要在删除后打印字符,则只需打印n [i],因为在&#34;如果&#34;块n [i]保证为n2 [j]。