问一个输入缓冲区问题
我刚才写了一个程序
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");
}