宅在家 发表于 2020-12-27 16:00:02

小白求助

我想将单链表中的数据读取到txt文件中但是写入的函数不知出了什么问题写入后是乱码,从文件读取输出的函数没有问题,麻烦大佬们看看
<void readToFile(struct Node* list)//list是链表头
{
    FILE* fp;
    if ((fp = fopen("D:\\qt creator code\\homework2\\info_employee.txt", "wb")) == NULL)
    {
      printf("写入文件失败!\n");
      exit(0);
    }
    struct Node* pMove = list->next;
    emp *data_read = (struct employee *)malloc(sizeof (struct employee));
    while (pMove != NULL)
    {
      strcpy(data_read->name,pMove->data.name);
      data_read->num = pMove->data.num;
      data_read->age = pMove->data.age;
      data_read->emp_time.year = pMove->data.emp_time.year;
      data_read->emp_time.year = pMove->data.emp_time.month;
      data_read->emp_time.year = pMove->data.emp_time.day;
      data_read->salary = pMove->data.salary;
      fwrite(data_read,sizeof (emp),1,fp);
      pMove = pMove->next;
    }
    fclose(fp);
}>

谢谢大家{:10_266:}

jackz007 发表于 2020-12-27 17:03:02

本帖最后由 jackz007 于 2020-12-27 17:06 编辑

void readToFile(struct Node * list)//list是链表头
{
      int c                                                                                       ; // 记录数计数器
      FILE * fp                                                                                 ;
      if ((fp = fopen("D:\\qt creator code\\homework2\\info_employee.txt", "wb")) == NULL) {
                printf("写入文件失败!\n")                                                          ;
                exit(0)                                                                           ;
      } else {
                c = 0                                                                               ; // 记录数计数器归 0         
                fwrite(& c , sizeof(int) , 1 , fp)                                                ; // 预留一个整型数的存储空间
                for(c = 0 ; list ; list = list -> next , c ++) fwrite(list , sizeof (emp) , 1 , fp) ;
                fseek(fp , 0 , 0)                                                                   ; // 移动读写指针到文件开头
                fwrite(& c , sizeof(int) , 1 , fp)                                                ; // 记载记录数,读取文件的时候有用               
                fclose(fp)                                                                        ;
      }
}

马邦浩 发表于 2020-12-28 19:22:59

b是打开二进制文件的,.bin,不是.txt;而且用fscanf会更好
页: [1]
查看完整版本: 小白求助