需要澄清有关 C 中的 gets 函数
Need clarification regarding gets function in C
我是 C 编程新手。我正在尝试练习一个简单的练习题:如下:
编写一个程序,一行一行地读取输入行,直到到达文件末尾,确定每个输入行的长度,然后只打印找到的最长行。您可以假定最大输入行长度为 1000 个字符。
我的代码粘贴在这里:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LEN 1000
int main(void)
{
char line[MAX_LEN], line_temp[MAX_LEN];
int largest_line_size = 0;
int current_line_size;
while ( gets ( line_temp ) != NULL)
{
if ( ( current_line_size = strlen( line_temp ) ) > largest_line_size )
{
strcpy(line, line_temp);
largest_line_size = current_line_size;
}
/*printf("%s\n", line); */
}
printf("%d", largest_line_size);
printf("%s", line);
return EXIT_SUCCESS;
}
问题是代码运行,接受输入,但我从来没有达到 while 循环中断的地步。使用 gets() 函数时如何遇到 NULL 指针?
非常感谢您的帮助。
谢谢,
问题说您必须从文件中读取输入。
您为什么要在 运行 时间从用户那里接受它?
例如,如果fr
是一个文件,您可以执行以下操作。
fr = fopen ("filename", "rt"); /* open the file for reading */
/* filename is the name of the file */
/* "rt" means open the file for reading text */
while(fgets(line_temp,MAX_LEN, fr) != NULL)
{ //...do your stuff }
注意,当文件中没有更多行时,fgets()
returns NULL。
我自己解决了这个问题。当从 stdin 读取字符时,在上面的代码中终止循环的方法是在 Windows 中按 CTRL-D (Unix) 或 CTRL-Z。在任何一种情况下,都会触发 EOF 并且 gets 或 fgets 命令 returns 一个 NULL 指针。很抱歉浪费了时间。
谢谢
我是 C 编程新手。我正在尝试练习一个简单的练习题:如下:
编写一个程序,一行一行地读取输入行,直到到达文件末尾,确定每个输入行的长度,然后只打印找到的最长行。您可以假定最大输入行长度为 1000 个字符。
我的代码粘贴在这里:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LEN 1000
int main(void)
{
char line[MAX_LEN], line_temp[MAX_LEN];
int largest_line_size = 0;
int current_line_size;
while ( gets ( line_temp ) != NULL)
{
if ( ( current_line_size = strlen( line_temp ) ) > largest_line_size )
{
strcpy(line, line_temp);
largest_line_size = current_line_size;
}
/*printf("%s\n", line); */
}
printf("%d", largest_line_size);
printf("%s", line);
return EXIT_SUCCESS;
}
问题是代码运行,接受输入,但我从来没有达到 while 循环中断的地步。使用 gets() 函数时如何遇到 NULL 指针?
非常感谢您的帮助。
谢谢,
问题说您必须从文件中读取输入。
您为什么要在 运行 时间从用户那里接受它?
例如,如果fr
是一个文件,您可以执行以下操作。
fr = fopen ("filename", "rt"); /* open the file for reading */
/* filename is the name of the file */
/* "rt" means open the file for reading text */
while(fgets(line_temp,MAX_LEN, fr) != NULL)
{ //...do your stuff }
注意,当文件中没有更多行时,fgets()
returns NULL。
我自己解决了这个问题。当从 stdin 读取字符时,在上面的代码中终止循环的方法是在 Windows 中按 CTRL-D (Unix) 或 CTRL-Z。在任何一种情况下,都会触发 EOF 并且 gets 或 fgets 命令 returns 一个 NULL 指针。很抱歉浪费了时间。
谢谢