首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

问一个输入缓冲区有关问题

2012-02-27 
问一个输入缓冲区问题我刚才写了一个程序while(fgets(buffer,256,stdin)){............//一些代码,不影响

问一个输入缓冲区问题
我刚才写了一个程序

while(fgets(buffer,256,stdin))
{

..
...
....
...//一些代码,不影响输出

printf("\n");

}

当我输入一行字符

大概是 abc dsw xa we d  

输入一行字符应该只执行了循环。但居然输出了几个"\n"

而且,我输入一行字符串有多少个空格就有多少个"\n"

我省略的代码应该没关系

是与输入输出缓冲区的机制有关的

期待明白人回答


[解决办法]
每次循环都用一个getchar刷新缓冲
[解决办法]
arong1234
 
(阿荣) 

等 级: 
久违了:

[解决办法]
fgets函数用来从文件中读入字符串。fgets函数的调用形式如下:fgets(str,n,fp);此处,fp是文件指针;str是存放在字符串的起始地址;n是一个int类型变量。函数的功能是从fp所指文件中读入n-1个字符放入str为起始地址的空间内;如果在未读满n-1个字符之时,已读到一个换行符或一个EOF(文件结束标志),则结束本次读操作,读入的字符串中最后包含读到的换行符。因此,确切地说,调用fgets函数时,最多只能读入n-1个字符。读入结束后,系统将自动在最后加'\0',并以str作为函数值返回。
[解决办法]
fgets是非格式化输入,它要从标准输入中读取255字符并在最后加一个'\n',
如果在读满255个字符之前遇到了'\n',则读入'\n'后就结束了:
如下面的代码:你输入abc dsw xa we d按回车,后在屏幕上应该只有两个空行:
一个是字符串末尾的'\n',一个是 printf("\n");,并不会出现一个空格就有一个空行的情况,
如果真是这样,估计是你循环体中的代码的问题。
while(fgets(buffer,256,stdin))
{
printf("%s",buffer);
printf("\n");

}

热点排行