在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读取文件,但是并不能解决问题。有什么想法吗?
如果要测试,只需打印十六进制进行比较,这很有用;您可以在一个应用中编写两个func,例如main(){writefile(); readfile();}