鱼C论坛

 找回密码
 立即注册
查看: 792|回复: 2

[已解决]小白求助

[复制链接]
发表于 2020-12-27 16:00:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我想将单链表中的数据读取到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);
}>

谢谢大家
最佳答案
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)                                                                          ;
        }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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)                                                                          ;
        }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-12-28 19:22:59 | 显示全部楼层
b是打开二进制文件的,.bin,不是.txt;而且用fscanf会更好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 06:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表