请解释下列每一行代码的作用,每一个字符的意思都要解释

想看代码反向学习,讲的太快了我没听懂,请解释一下代码的意思,谢谢!

img

img

注释已经全部补充完毕,每一行都有注释,关键函数有说明,望采纳。
注释如下:


//按照图书id查找
void search_num() {
    long n;  //声明一个变量n,用来存储用户输入的图书书号
    int p = 0; //声明一个变量p,用来标记是否找到符合条件的结构体
    STU s; //声明一个STU结构体变量
    FILE* fp; //声明一个文件指针
    system("cls");  //清空控制台显示内容
    if ((fp = fopen("e:\\file1", "rb")) == NULL) { //fopen打开文件,rb表示以二进制读模式打开,fp接收返回的文件指针,如果打开失败,fp的值是0,这里用来判断文件是否正确打开
        printf("Error opening file!\n"); //控制台显示文件打开失败
        exit(1); //退出程序,返回码是1
    }
    printf("\n\t请输入图书的书号:");  //提示用户输入
    scanf("%ld", &n); //读取用户输入的图书号,并保存到n中
    while (fread(&s, sizeof(STU), 1, fp) != 0) { //从文件中逐个结构体读取,并把读取的数据存入s,读取成功返回1,否则返回0,如果读取成功,执行{}中的代码
        if (s.num == n) { //判断读取的结构体的图书书号是否与用户输入的一致,如果一致,执行{}中的操作
            printf("\n\t联系人信息:\n"); //单独一行显示 联系人信息
            printf("\n\t书号t书名\t作者\t出版社\t借阅状态n\n"); //单独一行显示结构体字段名称
            //显示结构体各字段的值
            printf("\t % ld\t % slt % s\t % slt % s\n”,s.num, s.name, s.author, s.presss.borrowed ? “已借出” : “未借出");
            p = 1; //标记置1,表示找到
            break; //结束while循环
        }
    }
    if (p == 0) //如果标记为0,说明没找到
        printf("\n\t对不起,您查找的图书不存在。\n"); //显示没找到提示信息
    fclose(fp); //关闭文件
    system("pause"); //暂停执行,这里是为了显示所有信息,避免上述信息一闪而过
}



//按照姓名查找
void search_nam() {
    char name[20]; //声明一个字符数组,用来保存用户输入的图书名称
    int p = 0; //声明一个变量p,用来标记是否找到符合条件的结构体
    STU s;//声明一个STU结构体变量
    FILE* fp;//声明一个文件指针
    system("cls");//清空控制台显示内容
    if ((fp = fopen("e:\\file1", "rb")) == NULL) { //fopen打开文件,rb表示以二进制读模式打开,fp接收返回的文件指针,如果打开失败,fp的值是0,这里用来判断文件是否正确打开
        printf("Error opening file!\n"); //控制台显示文件打开失败
        exit(1); //退出程序,返回码是1
    }
    printf("\n\t请输入图书的名称:");  //提示输入图书的名字
    scanf("%s",name);  //读取用户输入的名字,并保存到name字符数组中
    while (fread(&s, sizeof(STU), 1, fp) != 0) { //从文件中逐个结构体读取,并把读取的数据存入s,读取成功返回1,否则返回0,如果读取成功,执行{}中的代码
        if (strcmp(s.name, name) == 0) { //比较读取的图书结构体的名字是否与用户输入的一致,如果名字一致,strcmp()函数返回0,strcmp用来比较两个字符串
            if (p == 0) { //如果之前没有找到过符合条件的结构体,那么就输出下面的信息(相当于只输出一次表格的表头部分)
                printf("\n\t联系人信息:n");  //单独一行显示  联系人信息
                printf("\n\t书号t书名t作者t出版社t借阅状态n\n"); //单独一行显示,图书结构体各字段名称,相当于表格的表头
            }
            //输出图书结构体的信息
            printf("\t%ld\t%slt%slt%slt%s\n”,s.num,s.name, s.author, s.press,s.borrowed ?“已借出”:“未借出");
            p = 1; //如果找到符合条件的,将标记置1
        }
    }
    if (p == 0) //标记为0,说明没找到符合条件的结构体
        printf("\n\t对不起,您查找的图书不存在。\n"); //显示未找到图书提示信息
    fclose(fp); //关闭文件
    system("pause"); //暂停执行,为了用户能够看到控制台上打印的所有信息
}


您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632