小白求救
#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)不是换行而是直接而输出了{:10_277:} main()函数 应该返回个int 值吧 int main(void) 键盘输入的字符会先保存在缓冲区,缓冲区满了或者是遇到了回车就会把缓冲区中的内容输出 楼主您好。如果我没有猜错的话,你的意思是,按回车之后想不输出字符,并且让getchar()函数等待你的输入对吗。
首先分析,为什么回车之后会输入字符。这是由于在输入回车之前,getchar 函数一直等待数据的输入,直到用户按下回车(回车这个ASCII码也会被放入)。可以把这个过程也理解为一个循环,退出条件就是用户按下回车。这时候,函数就不再等待用户输入,而是去缓冲区提取数据。(如果楼主对缓冲比较陌生,就把他当做一个管道,一头字符,一头出字符,回车按下之后, 进数据一头就给堵上,而在另一头取数据)取出的数据就是字符的ascii码,满足本程序的循环条件 while((c = getchar()) != EOF)所以会执行下面的
putchar() 函数输出字符。
然后再建议楼主 , 提问的时候最好写写注释,就是程序目的,语句作用啥的,不然我们还要猜,效率不高的。
最后
if (楼主问题解决)
{
求最佳和积分。嘿嘿!不脸红
}
else
{
欢迎回复追问哦!
} 能说说你这代码干嘛用的吗,我怎么看着都像是个死循环啊,这循环能跳出来吗?
页:
[1]