帅周 发表于 2021-6-27 14:26:29

P59问题

#include<stdio.h>
#include<stdlib.h>

#define N 4

structStu
{
      char name;
      int num;
}stu,sb;

int main(void)
{
      FILE *fp;
      int i;

      if ((fp = fopen("test.txt","w")) == NULL)
      {
                printf("文件打开失败\n");
                exit(EXIT_FAILURE);
      }

      printf("请开始录入学生信息(格式: 姓名 学号 )\n");
      for (i = 0;i < N;i++)
      {
                scanf("%s %d",stu.name,&(stu.num));
      }

        fwrite(stu,sizeof(struct Stu),N,fp);
      // fwrite(stu,sizeof(stu),1,fp);
      printf("录入成功\n");
      fclose(fp);

      if ((fp = fopen("test.txt","r")) == NULL)
      {
                printf("文件打开失败\n");
                exit(EXIT_FAILURE);
      }

      fseek(fp,sizeof(struct Stu),SEEK_SET);
      fread(&sb,sizeof(struct Stu),1,fp);

      printf("第二位同学的信息:\n");
      printf("名字 %s\n",sb.name);
      printf("学号 %d\n",sb.num);

      fclose(fp);

      return 0;
}


fwrite(stu,sizeof(stu),1,fp); 和 fwrite(stu,sizeof(struct Stu),N,fp); 都可以运行成功.
他俩有什么区别么?

万千只cnm 发表于 2021-6-27 19:26:48

一样的啊
stu 是整个数组的大小 ,有n个结构体      

sizeof(stu) ==sizeof (一个结构体) *n个

然后写入fp中
页: [1]
查看完整版本: P59问题