gpt4 book ai didi

c - 从文件读取时获取结构中的垃圾值

转载 作者:行者123 更新时间:2023-11-30 18:53:56 25 4
gpt4 key购买 nike

我有一个像这样的文本文件

987jgkfl
12358ldjkdju
7579jngj
8uuujkl
09698fjfj

我有这样的结构

struct emprec

{

int empid;
int todo;
char name[20];

};

我将结构的值写入文件,如下所示

fd = fopen("/home/tarun/Desktop/test34.txt","a+");
fprintf(fd,"%d",temp2.empid);
fprintf(fd,"%s",temp2.name);
count++;
fclose(fd);

但是当我从文件中读取时,我得到了垃圾值

while(i<=count)
{
fread(&temp5,sizeof(temp5),1,fd);
//fscanf(fd,"%d,%s",&temp5.empid,temp5.name);
//int k = strlen(temp5.name);
//printf("Value of k is %d\n",k);
//temp5.name[7]= '\0';
//fread(&temp5.empid,sizeof(temp5.empid),1,fd);
//fread(temp5.name,20,1,fd);
printf("\n%d %s",temp5.empid,temp5.name);
i++;
}
fclose(fd);

请告诉我哪里错了

最佳答案

就像涅梅特罗伊德一样:

You're writing a textual representation (with fptrinf) of your struct but attempting to read a binary representation (with fread).

例如,假设您想在文件中写入一个 int。通过这样做:

   fd = fopen("file","a+");
fprintf(fd,"%d",42);

您将写入字符“4”和字符“2”。在 ASCII 中,“4”是 0x34,“2”是 0x32。如果您想读取该文件并尝试将其放入 4 字节整数中,请执行以下操作:

int a = 0;
fread(&a,sizeof(a),1,fd);

变量“a”将包含文件中的数据:

a = 0x00003234

而不是您期望的 42 (0x0000002a)。

关于c - 从文件读取时获取结构中的垃圾值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31559406/

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