Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要澄清C中的gets函数吗_C_Gets - Fatal编程技术网

需要澄清C中的gets函数吗

需要澄清C中的gets函数吗,c,gets,C,Gets,我是C编程新手。我试着练习一个简单的练习题:它是下面的: 编写一个程序,逐个读取输入行,直到到达文件末尾,确定每个输入行的长度,然后只打印找到的最长行。您可以假定最大输入行长度为1000个字符 我的代码粘贴在这里: #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_LEN 1000 int main(void) { char line[MAX_LEN], li

我是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;

}
#包括
#包括
#包括
#定义最大长度1000
内部主(空)
{
字符行[最大长度],行温度[最大长度];
int最大线大小=0;
int当前_线_尺寸;
while(获取(行温度)!=NULL)
{
如果((当前线路尺寸=strlen(线路温度))>最大线路尺寸)
{
strcpy(管线、管线温度);
最大线尺寸=当前线尺寸;
}
/*printf(“%s\n”,第行)*/
}
printf(“%d”,最大行大小);
printf(“%s”,第行);
返回退出成功;
}
问题是代码运行并接受输入,但我从未达到while循环中断的程度。如何在使用get()函数时遇到空指针

非常感谢你的帮助


谢谢,

问题是您必须从文件中读取输入内容
为什么在运行时从用户处接受它

例如,如果
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()
在文件中没有更多行时返回NULL。

我自己已经解决了这个问题。从stdin读取字符时,在上述代码中终止循环的方法是在Windows中按CTRL-D(Unix)或CTRL-Z。在这两种情况下,都会触发EOF,并且gets或fgets命令返回空指针。很抱歉浪费时间,如果那样的话


谢谢

直到文件结束。。。我不确定你做的对吗?!这些问题会一直持续到文件的结尾。这并不意味着它是从文件中读取的,它很可能是stdin。在任何情况下,我如何检查用户是否没有通过stdin流提供更多的输入?这应该是一个评论,而不是回答。好吧,我正在阅读的书中的一章,其中没有讨论对文件的读/写。虽然问题是文件结束,但这并不意味着输入是从文件读取的。它很可能是从stdin来的。从stdin读取字符时,如何获得空指针?您需要在标准输入中提供哪些输入/按键?@user3317287 NULL=='\0'==eof