一个C语言初学者的问题

题目是:任意给定一个字符串,从该串中删除指定的字符后输出。#include<stdio.h>voidmain(){charstr[5],c;inti,j;printf("... 题目是:任意给定一个字符串,从该串中删除指定的字符后输出。
#include<stdio.h>
void main()
{
char str[5],c;
int i,j;
printf("Input a string:");
scanf("%s",str);
printf("char:");
c=getchar();
j=0;
for(i=0;str[i]!='\0';++i)
if(str[i]!=c)
str[j++]=str[i];
str[j]='\0';
printf("Output a string:%s",str);
}
请问,这里面的字符变量c感觉是不是没必要啊!
我用Visual试了一下,感觉没有c和有c的时候差不多啊!
展开
 我来答
geniepengsz
2015-12-09 · TA获得超过2万个赞
知道大有可为答主
回答量:1.2万
采纳率:97%
帮助的人:2174万
展开全部

调试了一下,问题在字符串输入后,没有清系统stdin(标准输入流)的字符残余,导致残余字符被赋值给字符变量c。增加清系统stdin(标准输入流)的字符残余操作可解决问题。

修改代码和注释如下:

#include<stdio.h>

void main()

{

 char str[50],c;

 int i,j;

 printf("Input a string:");

 scanf("%s",str);

 getchar();  //清系统stdin流残余字符串

 printf("char:");

 c=getchar();

 j=0;

 for(i=0;str[i]!='\0';++i)

  if(str[i]!=c) 

   str[j++]=str[i];

 str[j]='\0';

 printf("Output a string:%s",str);

}

在VC6调试通过,如下图:

供参考。

GTA小鸡
高粉答主

2015-12-09 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2.6万
采纳率:78%
帮助的人:1.3亿
展开全部
没有c,你作比较的时候和谁去比较呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
向丶思阳
2015-12-09 · TA获得超过115个赞
知道答主
回答量:68
采纳率:0%
帮助的人:54.8万
展开全部
变量c就是你要指定删除的字符吧,你不要它的话怎么指定呢?
追问
可是好像有了c也不能指定啊,是不是程序错了呢
追答
getchar是从键盘接受一个字符,是在输入缓冲区取数据,所以在取新数据之前要先清空标准缓冲区。你将c=getchar();放到scanf("%s",str);前面,就可以实现你要的功能了。亲测有效。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6034c1b2
2015-12-09 · TA获得超过309个赞
知道小有建树答主
回答量:918
采纳率:0%
帮助的人:357万
展开全部
没C你怎么删指定的字符。。。
追问
可是就算有c我在命令框输入字符串,再按一下enter也只输出空格前面的字符串啊!是不是程序错了
追答
把你命令框输入输出内容截个图看看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式