gpt4 book ai didi

c - 文件返回垃圾,但写入正确

转载 作者:行者123 更新时间:2023-12-02 17:58:07 24 4
gpt4 key购买 nike

我正在将一个结构写入文件,但它返回垃圾。这是我的代码:

ptFile = fopen("funcionarios.dat", "ab+");
fwrite(&novoFunc, sizeof(strFunc), 1, ptFile);

fwrite之前和之后的struct novoFunc的值不是垃圾。但是,当我返回文件值时:

ptFile = fopen("funcionarios.dat", "rb+");
[...]

fseek(ptFile, i*sizeof(strFunc), SEEK_SET); //on the loop, i goes from 0 to total structs
fread(&funcionario, sizeof(strFunc), 1, ptFile);

printf("Code: %d; Name: %s; Address: %s; CPF: %d; Sales: %d\n", funcionario.codigo, funcionario.nome, funcionario.endereco, funcionario.cpf, funcionario.numVendas);

知道为什么吗?代码运行良好,我不记得做过重大更改。

提前致谢

编辑:结构定义

typedef struct func{

int codigo;
char nome[50];
char endereco[100];
int cpf;
int numVendas;
int ativo;


} strFunc;

Edit2:它变得更奇怪了:它在 Linux 上运行良好(使用 netbeans 和 gcc 编译器),但在 Windows 上则不然(devcpp 和 codeblocks)。嗯,完整的代码在这里:

http://pastebin.com/XjDzAQCx

函数 cadastraFucionario() 注册用户,当我使用 listaFuncionarios() 列出所有注册数据时,它返回垃圾。以下是 listaFuncionarios() 返回的内容:

http://img715.imageshack.us/img715/3002/asodfadhf.jpg

抱歉,代码不是英文

最佳答案

您说:“代码运行良好,但我不记得做过重大更改。”

当它工作正常时,它会将一些结构写入您的文件中。

也许后来它仍然工作正常,并且它在文件末尾附加了一些附加结构。原始数据仍然保留在文件的开头。因此,当您读取文件的开头时,您读取的是原始数据。也许吧。

你确定你读的是垃圾吗?您确定您没有只是读取旧数据吗?

在您的代码中:

ptFile = fopen("funcionarios.dat", "ab+");

对于某些目的来说,追加是正确的做法,但对于另一些目的来说,追加是正确的做法。您需要 wb+ 吗?

关于c - 文件返回垃圾,但写入正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11025845/

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