while (gets(input)!=NULL)如何是该循环结束???

pang1567 2011-11-14 03:14:49

int main (void)
{
char input[MAX_LEN];
int len,longest_len=-1;
char longest[MAX_LEN];
while (gets(input)!=NULL){
len=strlen(input);
if(len>longest_len){
longest_len=len;
strcpy(longest,input);
}
}
if(longest_len>0)
puts(longest);
return EXIT_SUCCESS;
}

这是C和指针里一个习题的代码,输入几个字符串,然后输出最长的那个,我在测试运行的时候,无法结束字符串的输入,就是无论我输入“回车”还是“空格”啥的,都显示继续输入,无法结束while循环。
我知道,gets()函数如果无法读入一个字符串就会返回NULL指针,但是我们在键盘输入的字符均是字符串,无法是输入失败的。所以这里有疑问,请大家解释(我用了CTRL+C,结果直接退出程序,while后边的代码也 不在执行了,显然是不行的)谢谢大家了……
...全文
1744 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
pang1567 2011-11-15
  • 打赏
  • 举报
回复
谢谢大家的回复,是CTRL+Z 我把分数给最先回复我的两个人吧 谢谢了……
辰岡墨竹 2011-11-14
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 biaobiao99 的回复:]

while(gets(input)!=NULL&&input[0]!='\0')
.......
不输入字符 直接按ENTER退出
[/Quote]
这个方法好,也可以strlen(input)==0这样。
biaobiao99 2011-11-14
  • 打赏
  • 举报
回复
while(gets(input)!=NULL&&input[0]!='\0')
.......
不输入字符 直接按ENTER退出
goldbeef 2011-11-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hnuqinhuan 的回复:]

ctrl+z
[/Quote]++
ProgrammingRing 2011-11-14
  • 打赏
  • 举报
回复
ctrl+z
FrankHB1989 2011-11-14
  • 打赏
  • 举报
回复
stdin的EOF?DOS/Windows控制台F6/Ctrl+Z再回车,Linux终端shell之类默认Ctrl+D。
無_1024 2011-11-14
  • 打赏
  • 举报
回复
ctrl+z
自信男孩 2011-11-14
  • 打赏
  • 举报
回复
gets()函数是向stdin文件中读取一行字符,文件的结束标识是EOF,所以你需要输入EOF才能结束该循环。方法是通过ctr + d输入EOF来结束循环(在linux下是输入ctr + d)。
心死 2011-11-14
  • 打赏
  • 举报
回复
Ctrl+Z
ndy_w 2011-11-14
  • 打赏
  • 举报
回复
F6或ctrl-z
zjwzcnjsy 2011-11-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zjwzcnjsy 的回复:]
while(gets(input))
{
...
}
...


退出按ctrl+z
[/Quote]
int main (void)
{
char input[MAX_LEN];
int len,longest_len=-1;
char longest[MAX_LEN];
while (gets(input)){
len=strlen(input);
if(len>longest_len){
longest_len=len;
strcpy(longest,input);
}
}
if(longest_len>0)
puts(longest);
return 0;
}
zjwzcnjsy 2011-11-14
  • 打赏
  • 举报
回复
while(gets(input))
{
...
}
...


退出按ctrl+z

70,004

社区成员

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

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