0

我尝试使用以下代码将结构写入文件:

#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。出了什么问题?

4

1 回答 1

3

这是因为您将整数值55作为字符读取,而在 ASCII 字母表中,值 55 与字符相同'7'

您需要以与编写结构相同的方式读取结构,使用fread.

于 2013-06-29T11:33:33.673 回答