c语言——对一行文字,删去其中某个字符,此行文字和要删的字符均由键盘输入

帮忙看看我编的,谢谢
#include<stdio.h>
#include<string.h>
void main()
{char line[80],ll[2];
char ch;
int i,j;
int len;
printf("输入一行字符 \n");
scanf("%s",&line);
printf("输入要删除字符\n ");
scanf("%s",ll);ch=ll[0];
i=0;
while(line[i]!='\0' )
{while(line[i]!=ch) i++;
len=strlen(line);
for(j=i;j<len-1;j++)
line[j]=line[j+1];
line[j]='\0';
}
puts(line);
}

原题
#include<stdio.h>
#include<string.h>
void main()
{char line[80],ll[2];
char ch;
int i,j;
int len;
printf("输入一行字符 \n");
________________;
printf("输入要删除字符\n ");
scanf("%s",ll);ch=ll[0];
i=0;
while(line[i]!='\0' )
{while(________________&& line[i]!=ch) i++;
len=strlen(line);
for(j=i;j<len-1;j++)
_______________________;
line[j]='\0';
}
puts(line);
}

#include<stdio.h>
#include<string.h>
void main()
{char line[80],ll[2];
char ch;
int i,j;
int len;
printf("输入一行字符 \n");
scanf("%s",&line); 改为:scanf("%s",line);(line[]; line 就是地址)
printf("输入要删除字符\n ");
scanf("%s",ll);ch=ll[0];
i=0;
while(line[i]!='\0' )
{
while(line[i]!=ch)改为:while(line[i]!='\0'&& line[i]!=ch) -》》》虽然外面有判断结束的,但是里面也向后扫描,所以也要判断
i++;
len=strlen(line);
for(j=i;j<len-1;j++)
line[j]=line[j+1];
line[j]='\0';
}
puts(line);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-04-17
感觉你给这个不对
给你改了改
试了 好使
#include<stdio.h>
#include<string.h>
void main()
{char line[80],ll[2];
char ch;
int i,j;
int len;
printf("输入一行字符 \n");
scanf("%s",line);
printf("输入要删除字符\n ");
scanf("%s",ll);ch=ll[0];
i=0;
while(line[i]!='\0')
{
if(line[i]!=ch)
i++;
else
{len=strlen(line);
for(j=i;j<len-1;j++)
line[j]=line[j+1];;
line[j]='\0'; }
}
puts(line);
}
第2个回答  2009-04-17
如果别人输入中文,估计你这个是跑不起来的
全字符的话问题应该不大
不过效率可以再考虑下,循环的嵌套应该可以不使用
如果只是删除一个字符串中所有的指定字符
算法复杂度我写过的最低可以是O(n)
第3个回答  2009-04-17
第一处空白行应改为:
scanf("%s",line);
第4个回答  2009-04-17
数组名本来就是地址,所以line前面的取地址符号&要去掉噢
相似回答