[在Linux中用C读取文件时出现段错误

问题描述 投票:0回答:1

在C中读取文件时遇到分段错误。下面是用于写入和读取文件的代码。

写文件

 #include <stdio.h>
 #include <hc25.h>
 #include "struct.h"
 int main()
 {
    struct account acc;
    FILE *fp;
    if((fp = fopen("bank.dat", "a+")) == NULL)
    {
        perror("Error: Unable to Open file\n");
    }
    acc.accNo = String("Account No.: ");
    acc.name = String("Your name: ");
    acc.age = Int("Age: ");
    acc.balance = Float("Balance: ");
    printf("%s\n", acc.accNo);
    printf("%s\n", acc.name);
    printf("%i\n", acc.age);
    printf("%f\n", acc.balance);
    fwrite(&acc, sizeof(struct account), 1, fp);
    fclose(fp);
    return 0;
 }

读取文件

 #include <stdio.h>
 #include <hc25.h>
 #include "struct.h"
 int main()
 {
    struct account acc, *ptr;
    ptr = &acc;
    FILE *fp;
    if((fp = fopen("bank.dat", "r")) == NULL)
    {
         perror("Error: Unable to Open file\n");
    }
    while(fread(&acc, sizeof(struct account), 1, fp)>0)
    {
        printf("%s\n", acc.accNo);
        printf("%s\n", acc.name);
        printf("%i\n", acc.age);
        printf("%f\n", acc.balance);
    }
    fclose(fp);
    return 0;
 }

我已经尝试使用* ptr而不是&acc读取文件,但是并不能解决问题。有什么想法吗?

c struct fwrite fread
1个回答
0
投票

如果要测试,只需打印十六进制进行比较,这很有用;您可以在一个应用中编写两个func,例如main(){writefile(); readfile();}

© www.soinside.com 2019 - 2024. All rights reserved.