gpt4 book ai didi

c - fgets 不读取行的开头

转载 作者:行者123 更新时间:2023-11-30 15:29:31 27 4
gpt4 key购买 nike

我在使用 fgets 从文件中读取几行文本时遇到问题。该文件是一些基本的用户数据,在插件首次启动时写入 bundle 内的文件中。插件的任何后续启动都应该导致用户数据被读取和交叉引用以检查用户的真实性。

数据始终为 3 行长,并且完全按照应有的方式使用 frwite 写入,并使用 fopen 打开。

我最初的理论是只调用 fgets 3 次,将每一行读入它自己的 char 数组,该数组是数据结构的一部分。问题是第一行被正确读取,第二行被读取,就好像位置指示器从下一行开始,但偏移了从第 1 行读取的字符数。然后根本不读取第三行。

fgets 没有返回任何错误,并且表现得好像它已经读取了它应该具有的数据,所以我显然错过了一些东西。

无论如何,这是我的代码的一部分,希望有人能够阐明我的错误!

int length;

fgets(var.n, 128, regFile);
length = strlen(var.n);
var.n[length-1] = NULL;

fgets(var.em, 128, regFile);
length = strlen(var.em);
var.em[length-1] = NULL;

fgets(var.k, 128, regFile);
length = strlen(var.k);
var.k[length-1] = NULL;

fclose(regFile);

将每个字符串的最后一个字符设置为NULL只是为了删除/n

此代码序列输出第 1 行的全部内容、第 2 行的后半部分以及第 3 行的任何内容。

最佳答案

感谢@alvits对此问题的回答:

fwrite() is not compatible with fgets(). Files created using fwrite() should use fread() to read them ?>back in. Both fwrite() and fread() operates on binary streams unless explicitly converted to and from >strings. fgets() is compatible with fputs(), both operates on strings.

我使用 fputs() 来写入数据,并且它完美地读回。

关于c - fgets 不读取行的开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26225558/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com