【发布时间】:2015-07-22 09:39:51
【问题描述】:
我有一个这样的文本文件
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);
请告诉我哪里出错了
【问题讨论】:
-
尝试格式化阅读...比如
fscanf()。 -
另外,第一个文件的目的是什么?
-
@SouravGhosh 第一个文件是我必须从中读取值的文本文件。并且还尝试了 fscanf 但没有得到确切的输出
-
我不确定,但在
fread之前可能需要rewind(fp);。 -
您正在编写结构的文本表示(使用 fptrinf),但尝试读取二进制表示(使用 fread)。
标签: c linux file parsing struct