循环跳不出去!!!!求前辈们指点。

一世豁然 2014-02-27 01:45:47
#include <stdio.h>
#include <stdlib.h>
#include<string.h>

#define MAX_LEN 1001


int main(void)
{
char input[MAX_LEN];
int len;
char longest[MAX_LEN];
int longest_len;

longest_len = -1;

while ((fgets(input, MAX_LEN,stdin)) != NULL) 一直在此处循环跳不出去。
{
len = strlen(input);
if (len > longest_len)
{
longest_len = len;
strncpy(longest, input, MAX_LEN);
}
}

if (longest_len >= 0)
puts(longest);
return EXIT_SUCCESS;
}
...全文
201 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
一世豁然 2014-02-28
  • 打赏
  • 举报
回复
引用 2 楼 luobinshan 的回复:
一般在fgets循环中, 增加一个 if ( input[0] == 'q' ) break; 这样按q就可以退出了. 由键盘产生EOF也行. windows Ctrl+Z linux Ctrl+d
这解决办法不错。但为什么跳不出来呢?
一世豁然 2014-02-28
  • 打赏
  • 举报
回复
引用 3 楼 u012889234 的回复:
stdio 不是标准输入吗? while永远为真。 在循环内给结束条件(在if里加break)
为什么输入流就永远为真呢?
一世豁然 2014-02-28
  • 打赏
  • 举报
回复
引用 1 楼 starytx 的回复:
stdin是你的文件指针?
输入流。
赵4老师 2014-02-28
  • 打赏
  • 举报
回复
Enter,Ctrl+Z,Enter
捣蛋不对 2014-02-28
  • 打赏
  • 举报
回复
stdin是输入流的话,fgets 读入回车算成功不返回失败 怎么按回车也不结束啊~ 要结束就像2楼说的那样产生EOF
TheLostMan丶 2014-02-28
  • 打赏
  • 举报
回复
你可以捕获fgets的返回值 调试看看 为什么一直不等于NULL
ForestDB 2014-02-28
  • 打赏
  • 举报
回复
Linux ^D Windows ^Z 产生EOF
(>^ω^<)喵上树 2014-02-27
  • 打赏
  • 举报
回复
stdio 不是标准输入吗? while永远为真。 在循环内给结束条件(在if里加break)
luobinshan 2014-02-27
  • 打赏
  • 举报
回复
一般在fgets循环中, 增加一个 if ( input[0] == 'q' ) break; 这样按q就可以退出了. 由键盘产生EOF也行. windows Ctrl+Z linux Ctrl+d
starytx 2014-02-27
  • 打赏
  • 举报
回复
stdin是你的文件指针?

69,374

社区成员

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

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