我尝试使用以下代码将结构写入文件:
#include<stdio.h>
struct record
{
char name[80];
int roll;
};
int main( )
{
FILE* p=NULL;
int length=0;
char* file="abcd.txt";
struct record r1={"abcd",55};
p=fopen(file,"w");
if (p==NULL) {
printf("Error in opening file");
}
length=sizeof(r1);
fwrite(&r1,length,1,p);
fclose(p);
printf("Written successfully\n");
free(r1);
}
当我尝试使用以下文件阅读以下文件时:
#include<stdio.h>
main( )
{
int c;
FILE* p=NULL;
p=fopen("abcd.txt","r");
if (p) {
while ((c=getc(p)) != EOF)
putchar (c);
fclose(p);
}
}
当我运行最后一个程序时,打印的值为:
ABCD 7
第一个字段“abcd”正确打印,但是打印的下一个值是7,尽管我试图在文件中写入55.出了什么问题?
答案 0 :(得分:3)
这是因为你将整数值55
读作字符,而在ASCII字母表中,值55与字符{{1}相同}}
您需要使用'7'
以相同的方式阅读结构。