我试图用c编程开始使用io操作。我经常面临这个错误 “分段故障核心倾倒”。有没有人清楚地解释为什么我得到这个错误。 以及如何避免这种愚蠢的错误?
提前感谢..
struct Subscriber { char *name; char msisdn[10+1]; };
int main() {
FILE * ostream;
ostream = fopen("UsersData.dat","w");
struct Subscriber record;
do {
printf(" Enter subscriber record[name<Ent>msisdn<Ent>] :");
scanf("%s",&record.name);
scanf("%s",&record.msisdn);
printf("Record [ %s | %s ] \n", record.name, record.msisdn);
fwrite(&record, sizeof(record), 1, ostream);
printf(" Do want to Insert new record? [y/n] : ");
fflush(stdin);
} while ('y' == getc(stdin));
fclose(ostream);
printf(" file closed ");
return 0;
}
答案 0 :(得分:2)
您的类型Subscriber
包含name
类型char*
的成员;不幸的是,你永远不会为这个指针分配任何内存指向。当您稍后执行scanf
时,您正试图读入不存在的char
缓冲区。
为什么不让name
成为一个数组,例如msisdn
?
另外,不要将代码写入难以辨认的矩形块中。那太奇怪了。