{/'title/':/'C语言图书管理系统:第二本书图书编码丢失问题解决方法/',/'description/':/'本文分析了C语言图书管理系统中,第七个功能图书信息输出时第二本书的图书编码丢失的问题。通过代码分析,发现问题出在添加图书信息的代码段中,两次调用scanf函数获取图书种类和图书种类编号时,参数相同导致第二次输入覆盖了第一次输入的内容。文章提供了解决方法,修改添加图书信息的代码,将第二次输入的内容存储到不同的变量中。/',/'keywords/':/'C语言, 图书管理系统, 链表, 编码丢失, 问题解决, scanf, 变量覆盖/',/'content/':/'///'在第七个功能中,输出图书信息的代码段如下:////n////nc////nvoid displayBook() {////n if (head == NULL) {////n printf(///'图书列表为空!//n///');////n return;////n }////n////n BookNode *current = head;////n while (current != NULL) {////n printf(///'图书编号:%s//n///', current->bookCode);////n printf(///'书名:%s//n///', current->bookName);////n printf(///'作者:%s//n///', current->author);////n printf(///'出版社:%s//n///', current->publisher);////n printf(///'图书种类:%s//n///', current->bookkind);////n printf(///'图书种类编号:%s//n///', current->bookkinds);////n printf(///'价格:%d//n///', current->quantity);////n printf(///'借阅状态:%s//n///', current->borrowed ? ///'已借出///' : ///'未借出///');////n printf(///'//n///');////n////n if (current->next != NULL) {////n printf(///'//n///');////n }////n////n current = current->next;////n }////n}////n////n////n根据代码可以看出,在输出图书信息的过程中,程序按照链表中的顺序依次输出每本书的信息。如果第二本书的图书编码不见了,可能是在添加图书信息的过程中出现了问题。请检查添加图书信息的代码段:////n////nc////nvoid addBook() {////n BookNode *newNode = (BookNode *)malloc(sizeof(BookNode));////n printf(///'请输入图书编号:///');////n scanf(///'%s///', newNode->bookCode);////n printf(///'请输入书名:///');////n scanf(///'%s///', newNode->bookName);////n printf(///'请输入作者:///');////n scanf(///'%s///', newNode->author);////n printf(///'请输入出版社:///');////n scanf(///'%s///', newNode->publisher);////n printf(///'请输入图书种类:///');////n scanf(///'%s///', newNode->bookkinds);////n printf(///'请输入图书种类编号:///');////n scanf(///'%s///', newNode->bookkinds);////n printf(///'请输入价格:///');////n scanf(///'%d///', &newNode->quantity);////n newNode->borrowed = 0;////n newNode->next = NULL;////n////n if (head == NULL) {////n head = newNode;////n } else {////n BookNode *current = head;////n while (current->next != NULL) {////n current = current->next;////n }////n current->next = newNode;////n }////n////n printf(///'添加成功!//n///');////n}////n////n////n可以看到,在添加图书信息的过程中,两次调用了scanf函数获取图书种类和图书种类编号:////n////nc////nprintf(///'请输入图书种类:///');////n scanf(///'%s///', newNode->bookkinds);////n printf(///'请输入图书种类编号:///');////n scanf(///'%s///', newNode->bookkinds);////n////n////n这两次调用的参数都是newNode->bookkinds,也就是说,两次输入的内容都会存储到newNode->bookkinds中,导致第二次输入的图书种类编号覆盖了第一次输入的图书种类。因此,在输出图书信息时,第二本书的图书编码不见了。////n////n要解决这个问题,可以修改添加图书信息的代码,在第二次调用scanf函数时,将输入的内容存储到newNode->bookkind中,而不是newNode->bookkinds。修改后的代码如下:////n////nc////nprintf(///'请输入图书种类:///');////n scanf(///'%s///', newNode->bookkind);////n printf(///'请输入图书种类编号:///');////n scanf(///'%s///', newNode->bookkinds);////n////n////n这样,每次输入的内容就会正确地存储到相应的变量中,不会出现覆盖的问题。/

C语言图书管理系统:第二本书图书编码丢失问题解决方法

原文地址: https://www.cveoy.top/t/topic/ptCi 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录