c语言字符数组中删除一个字符

#include <stdio.h>
int main(void)
{
int n,j;
char i[10];
char c;
for(n=0;n<10;n++)
scanf("%c",&i[n]);
scanf("%c",&c);
for(n=0;n<10;n++)
{
if(i[n]==c)
{
i[n]=i[n+1];
for(j=n+1;j<10;j++)
{
i[j]=i[j+1];
}
}
}
for(n=0;n<9;n++)
printf("%c",i[n]);
return 0;
}
输入十个字符,再删除其中与我输入那个字符相同的的字符,不知道为什么我写的这个一直就是删除最后一个字符,求大神看下

第1个回答  2014-04-15
#include <stdio.h>
int main(void)
{
int n,j;
char i[10];
char c;
for(n=0;n<10;n++)
scanf("%c",&i[n]);
scanf("%c",&c);
for(n=0;n<10;n++)
{
if(i[n]==c)
{
for(j=n;j<9;j++)
{
i[j]=i[j+1];
}
i[9] = 0;
}
}
for(n=0;n<10;n++)
printf("%c",i[n]);
return 0;
}
自己对照吧。追问

你能告诉我我的逻辑是哪里错了吗?

追答

所谓删除一个元素,就是将后面的元素前一个位置(通过多次赋值实现),最后一个位置要清空(也就是赋值为0)。

追问

你 给我的代码还是不行啊 。

追答

改成这样:scanf(" %c",&c);
你的输入了空格,也就是说你最终存入c的值其实是个空格!

第2个回答  2014-04-15
#include "stdafx.h"
#include <stdio.h>
int main(int argc, char* argv[])
{
 int n=10,i;
 char a[10];
 char c;
 for( i=0; i<10; i++)
 {
  scanf("%c",&c);
  a[i] = c;
 }
 scanf("%c",&c);
 for(i=0;i<10;i++)
 {
  if (a[i] == c)
  {
   for(int j = i; j<n-1; j++)
    a[j] = a[j+1];
   n--;
  }
 }
 for(i=0; i<n; i++)
  printf("%c ",a[i]);
 return 0;
}

相似回答