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'。
答案 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]。