我的文件里面只有两个内容为什么会读到三个,而且第三个是乱码


book* Initialisation_book(){
    
    book *tail=NULL,*Head=NULL,*sd;
    FILE*fp=NULL;
    fp=fopen("library.dat","r");
    if(fp==NULL){
        printf("打开文件失败!");
        exit(1);
    }
    while(!feof(fp)){
        sd=(book*)malloc(sizeof(book));
        sd->next=NULL;
        fread(sd,sizeof(book),1,fp);
        //    printf("%s\n",sd->name);
        if(Head){
            tail->next=sd;
            tail=tail->next;
        }else{
            Head=sd;
            tail=sd;
        }
    }
    tail=NULL;
    return Head;
}

img

这样改,供参考:

book* Initialisation_book(){

    book *tail=NULL,*Head=NULL,*sd;
    FILE*fp=NULL;
    fp=fopen("library.dat","r");
    if(fp==NULL){
        printf("打开文件失败!");
        exit(1);
    }
    while(1){ //while(!feof(fp))  修改
        sd=(book*)malloc(sizeof(book));
        sd->next=NULL;
        if (fread(sd,sizeof(book),1,fp) != 1){ // 修改
            free(sd);                          // 修改
            break;                             // 修改
        }
        //printf("%s\n",sd->name);
        if(Head){
            tail->next=sd;
            tail=tail->next;
        }else{
            Head=sd;
            tail=sd;
        }
    }
    fclose(fp);    // 修改
    tail=NULL;
    return Head;
}

fread(sd,sizeof(book),1,fp); 这里要少读一个字节,最后一个留着存放'\0',让你的程序知道字符串结束了。

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/1064899
  • 这篇博客也不错, 你可以看下蓝桥杯 算法训练 数字三角形
  • 除此之外, 这篇博客: 在屏幕上显示杨辉三角形中的 在屏幕上显示杨辉三角形 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 成绩10开启时间2020年03月28日 星期六 08:05
    折扣0.8折扣时间2020年04月20日 星期一 23:05
    允许迟交关闭时间2020年04月30日 星期四 23:05

    编写程序,输入正数n, 在屏幕上显示对应的杨辉三角形(注意数据之间的空格)。例如:n=5  图形如下:

    1

    1   1

    1   2   1

    1   3    3    1

    1   4    6    4   1

    1   5  10  10   5  1

     测试输入期待的输出时间限制内存限制额外进程
    测试用例 1 
    1. 6↵
     
    1.   1↵
    2.   1  1↵
    3.   1  2  1↵
    4.   1  3  3  1↵
    5.   1  4  6  4  1↵
    6.   1  5 10 10  5  1↵
    7.   1  6 15 20 15  6  1↵
    1秒64M0
    测试用例 2 
    1. 4↵
     
    1.   1↵
    2.   1  1↵
    3.   1  2  1↵
    4.   1  3  3  1↵
    5.   1  4  6  4  1↵
    1秒64M0
  • 您还可以看一下 吴刚老师的【吴刚】电商广告设计标准视频教程课程中的 电商广告设计三要素小节, 巩固相关知识点