关于fgets( )函数使用时,设置最大可输入参数失灵的问题

xiayiguo 2013-04-07 05:30:14
# include <stdio.h>
int main (void)
{
char line[5];
while (fgets (line, 5, stdin))
fputs (line, stdout);
return 0;
}


上面代码的情况下,为什么设置的最大读入字符数 5 没有作用啊?

而是用下面的语句,功能正常 !

int * p ;
p = line;
p = fgets (line, 5, stdin);
fputs (p, stdout);

...全文
154 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
tonforce 2013-04-07
  • 打赏
  • 举报
回复

// 这个代码里,你并没有循环地去读取,所以...
int * p ; 
p = line; 
p = fgets (line, 5, stdin); 
fputs (p, stdout); 
大极张三疯 2013-04-07
  • 打赏
  • 举报
回复
while (fgets (line, 5, stdin)) fputs (line, stdout); 进入循环,读了又读,录入多少都读出来了
tonforce 2013-04-07
  • 打赏
  • 举报
回复

while (fgets (line, 5, stdin))  // 1.你可以调试下,比如你输入10次q,while要循环3次,第一次打印qqqq,第二次打印qqqq,第三次打印qq       
fputs (line, stdout); 
// scanf("%*[^\n]%*c"); // 2.然后你加上这句后,看看是什么效果。这句的功能是清除输入缓冲区

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧