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后边的代码也 不在执行了,显然是不行的)谢谢大家了……
12 个解决方案
#1
while(gets(input))
{
...
}
...
退出按ctrl+z
{
...
}
...
退出按ctrl+z
#2
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;
}
#3
F6或ctrl-z
#4
Ctrl+Z
#5
gets()函数是向stdin文件中读取一行字符,文件的结束标识是EOF,所以你需要输入EOF才能结束该循环。方法是通过ctr + d输入EOF来结束循环(在linux下是输入ctr + d)。
#6
ctrl+z
#7
stdin的EOF?DOS/Windows控制台F6/Ctrl+Z再回车,Linux终端shell之类默认Ctrl+D。
#8
ctrl+z
#9
++
#10
while(gets(input)!=NULL&&input[0]!='\0')
.......
不输入字符 直接按ENTER退出
.......
不输入字符 直接按ENTER退出
#11
这个方法好,也可以strlen(input)==0这样。
#12
谢谢大家的回复,是CTRL+Z 我把分数给最先回复我的两个人吧 谢谢了……
#1
while(gets(input))
{
...
}
...
退出按ctrl+z
{
...
}
...
退出按ctrl+z
#2
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;
}
#3
F6或ctrl-z
#4
Ctrl+Z
#5
gets()函数是向stdin文件中读取一行字符,文件的结束标识是EOF,所以你需要输入EOF才能结束该循环。方法是通过ctr + d输入EOF来结束循环(在linux下是输入ctr + d)。
#6
ctrl+z
#7
stdin的EOF?DOS/Windows控制台F6/Ctrl+Z再回车,Linux终端shell之类默认Ctrl+D。
#8
ctrl+z
#9
++
#10
while(gets(input)!=NULL&&input[0]!='\0')
.......
不输入字符 直接按ENTER退出
.......
不输入字符 直接按ENTER退出
#11
这个方法好,也可以strlen(input)==0这样。
#12
谢谢大家的回复,是CTRL+Z 我把分数给最先回复我的两个人吧 谢谢了……