C语言 输入一串字符串 输入一个字符 查找改字符 删除后 输出字符串

若找到 则提示 是否删除 等待用户回答 若回答Y 就删除后并输出删除后的字符串
#include<stdio.h>
#include<string.h>
int main()
{
char ch[100],x,T,y;
int i;
printf("input:");
gets(ch);
printf("请输入一个字符:");
scanf("%c",&x);
while(ch[i]!='\0')
{
if(ch[i]==x)
{printf("找到此字符,需要删除吗?");}
else {printf("没有此字符");}
scanf("%c",&T);
if(T=='y')
{ch[i]=ch[i-1];}
else {break;}
i++;
}
return 0;
}
这是我的代码 不知道错哪了

 #include<stdio.h>
#include<string.h>
int main()

 char ch[100],x,T,y; 
 int i=0; 
 printf("input:"); 
 gets(ch); 
 printf("请输入一个字符:");
 scanf("%c",&x); 
 getchar();
 while(ch[i]!='\0') 
 {  
  if(ch[i]==x)  
  {
   while(1)
   {
    printf("找到此字符,需要删除吗?y/n:");
    scanf("%c",&T);
    if(T=='y')   
    {
     while(ch[i]!='\0')
     {
      ch[i]=ch[i+1];
      i++;
     }
     ch[i-1] = ch[i];//把未零放到结尾
     break;
    }   
    if(T=='n') 
    {
     return 0;
    }
   }
   break;
  }  
  if(ch[i+1]=='\0')
  {
   printf("未找到此字符\n"); 
   return 0;
  }
  i++; 
 }
 printf("删除后的结果\n");
 puts(ch);
 return 0;
}

刚你写的不够严谨,欢迎追问

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-04-08
删除后后面的字符串应当整体前移,所以if里面应当有个for循环。
你错在这里:
if(T=='y')
{ch[i]=ch[i-1];}//这里只做了一步追问

我前面都搞定了,就是不知道怎么输出删除后的字符串 求帮我来个代码 我自己写的代码在这里

if(T=='y')
for(i=0;ch[i]!='\0';i++)
{ch[i]=ch[i-1];
printf("%c",ch[i]);}
i++;

第2个回答  2014-04-08
你的变量i没有初始化,是个随机数,然后你就开始用ch[i].
需要把int i改成int i=0;追问

我前面都搞定了,就是不知道怎么输出删除后的字符串 求帮我来个代码 我自己写的代码在这里

if(T=='y')
for(i=0;ch[i]!='\0';i++)
{ch[i]=ch[i-1];
printf("%c",ch[i]);}
i++;

相似回答