fgets(s, 10, fp)s是从文件“ text.txt”开始读取的地址。 我对么?

如果是这样,当这样声明时,函数如何知道s指向哪里? 我一直以为s是内存中的随机空闲位置? 有人可以更深入地解释为什么这段代码是从“ text.txt”开头读取的吗?

我是C的新手。

fp = fopen("text.txt", "r");
    if (fp != NULL)
    {
        char *s
        printf("content of file:\n");
        while ((s = fgets(s, 10, fp)
        {
            printf("%s", s);
        }
        fclose(fp);
    }

#1楼 票数:4

您必须将有效指针作为第一个分支传递给fgets ,并且它必须至少指向第二个参数所指示的内存。

你可以改变

char *s 

char *s = malloc(10);

要么

char s[10];

fgets后面的代码会将数据从文件复制到分配的内存中。

#2楼 票数:3

您确实是在将文本读入内存中的随机位置。 这可能会崩溃,成功或完全做其他事情。 一旦写入不是您自己的内存,所有赌注都将关闭。

无论是声明s是这样的:

char s[10];

或分配:

s = malloc(10);

#3楼 票数:2 已采纳

s是存储从文件中读取的字节的位置。 (不是“在文件中开始读取的位置”,而是“在读取字节后将其放置的位置”)

在这种情况下,您无需将s设置为任何值,因此您不知道其中包含什么。 (换句话说,它尚未初始化)

因此,您要告诉fgets将它读取的字节存储在某个位置,而您不知道该位置是什么。 可能是一个未分配的地址(这将导致段错误),也许是一些没有使用的内存(在这种情况下它起作用),或者它指向了您刚刚告诉fgets覆盖的重要内容(在这种情况下,它工作,然后在其他一些代码尝试访问重要内容时崩溃)。 没有办法知道。

  ask by Nebojsa Tosic translate from so

未解决问题?本站智能推荐:

3回复

使用fgets()从文件读取然后使用另一个函数中的信息

我有这样的文本文件: 我想要的是能够使用fgets()逐行检索此信息。 当我读它时,我想调用另一个使用行读取的函数来处理信息并将其放在列表中。 问题是,当我尝试调用函数并将字符串作为参数传递时,它给出了seg错误:11。 这是我的代码。
1回复

如何使文件中每行的第一个字母大写为C

在text.txt文件中,我有一些行,例如“苹果是红色的。番石榴是绿色的。柠檬是黄色的”。 我希望换行的前几个字母(番石榴中的g为首字母,柠檬中的l为大写字母)。但是文件中的输出是相同的...
2回复

fgets()是否会移动文件指针?

fgets()函数是否自动将文件指针移动到我所提到的大小参数之间的位置? 例如 : 文件p.txt的内容是“我是个好孩子”。 使用fgets(a,5,fp1)之后,文件指针是否向前移动了5个位置? 在任何一本书中都找不到这个。 因此查询。
2回复

将双指针文件作为函数参数传递有什么意义? 提供的示例

我理解一个指向一个指针的指针是另一个指针的地址。 将文件的参数作为 FILE *(*stream) 而不是 FILE *stream 传递的背后究竟是什么原因? 如果有人可以向我解释为什么需要这样,以便我更好地理解为什么会这样,我将不胜感激。 下面提供了示例代码。
3回复

C,将文件的指针作为参数传递给aa函数

我正在制作一个函数来对txt文件中的数据进行排序,以生成其中的数据的最小值,平均值和最大值。 我想在多个文件上重复使用该功能。 因此,我想将文件的指针作为参数传递给函数。 但是,我的编译器给我以下错误: LA1.c:19:10:错误:未知类型名称'FILE'void mmm(FI
3回复

使用fgets()和strtok()读取文本文件以分隔行中的字符串,从而产生不必要的行为

我正在尝试使用fgets()和strtok()读取以下格式的文本文件。 我需要将第一个值与该行的其余部分分开,例如: 为此,我将strchr()用于val并将strtok()用于key ,但是,从文件读取时,key值保持不变。 我不明白为什么会这样,因为我在while循环内为i
2回复

将文件作为参数传递到我的程序中,然后传递给函数?

我正在使用CodeBlocks在C中创建我的程序,我遇到以下问题。 我试图打开并从.txt文件中读取,如果我将它放入主函数中,它可以正常工作: 但是,如果我使用“设置程序的参数”选项将文件“file.txt”的名称设置为CodeBlock中的参数,然后想要将其传递给将从中读取的函数
4回复

函数malloc分配了一个指针并读取了数据,但调用者无法访问它

我有一个特定的问题:尝试使用自己的函数将文件加载到内存中时遇到问题。 load_file_on_memory()接收文件名和指针。 它只是打开文件,为文件内容动态分配内存并填充它,然后将destiny作为参数将指针传递给调用方。 但是我有一个问题:在load_file_on_mem