一个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的时候差不多啊! 展开
#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的时候差不多啊! 展开
展开全部
调试了一下,问题在字符串输入后,没有清系统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调试通过,如下图:
供参考。
展开全部
没有c,你作比较的时候和谁去比较呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
变量c就是你要指定删除的字符吧,你不要它的话怎么指定呢?
追问
可是好像有了c也不能指定啊,是不是程序错了呢
追答
getchar是从键盘接受一个字符,是在输入缓冲区取数据,所以在取新数据之前要先清空标准缓冲区。你将c=getchar();放到scanf("%s",str);前面,就可以实现你要的功能了。亲测有效。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没C你怎么删指定的字符。。。
追问
可是就算有c我在命令框输入字符串,再按一下enter也只输出空格前面的字符串啊!是不是程序错了
追答
把你命令框输入输出内容截个图看看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询