程序演示文件IO操作

时间:2014-10-17 11:48:01

标签: c linux

我试图用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;
}

1 个答案:

答案 0 :(得分:2)

您的类型Subscriber包含name类型char*的成员;不幸的是,你永远不会为这个指针分配任何内存指向。当您稍后执行scanf时,您正试图读入不存在的char缓冲区。

为什么不让name成为一个数组,例如msisdn

另外,不要将代码写入难以辨认的矩形块中。那太奇怪了。