鱼C论坛

 找回密码
 立即注册
查看: 2764|回复: 4

小白求救

[复制链接]
发表于 2018-12-19 21:55:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
void main()
{
        int c,lastc;
        lastc = 'a';
        while((c = getchar()) != EOF)
        {
                if(c != ' ')
                {
                        putchar(c);
                }
                else if(lastc != ' ')
                {
                        putchar(c);
                }
                lastc = c;
        }
}
为何在dos窗口输入回车时(没有键入ctrl+z)不是换行而是直接而输出了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-12-19 22:09:57 | 显示全部楼层
main()函数 应该返回个int 值吧   int main(void)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-20 16:20:14 | 显示全部楼层
键盘输入的字符会先保存在缓冲区,缓冲区满了或者是遇到了回车就会把缓冲区中的内容输出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-20 17:30:10 | 显示全部楼层
楼主您好。如果我没有猜错的话,你的意思是,按回车之后想不输出字符,并且让  getchar()  函数等待你的输入对吗。

首先分析,为什么回车之后会输入字符。这是由于在输入回车之前,getchar 函数一直等待数据的输入,直到用户按下回车(回车这个ASCII码也会被放入)。可以把这个过程也理解为一个循环,退出条件就是用户按下回车。这时候,函数就不再等待用户输入,而是去缓冲区提取数据。(如果楼主对缓冲比较陌生,就把他当做一个管道,一头字符,一头出字符,回车按下之后, 进数据一头就给堵上,而在另一头取数据)取出的数据就是字符的ascii码,满足  本程序的循环条件    while((c = getchar()) != EOF)  所以会执行下面的
putchar() 函数输出字符。
然后再建议楼主 , 提问的时候最好写写注释,就是程序目的,语句作用啥的,不然我们还要猜,效率不高的。

最后
if (楼主问题解决)
{
        求最佳和积分。嘿嘿!不脸红
}
else
{
        欢迎回复追问哦!
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-20 19:58:08 | 显示全部楼层
能说说你这代码干嘛用的吗,我怎么看着都像是个死循环啊,这循环能跳出来吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-3 02:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表