【发布时间】:2014-03-01 11:57:00
【问题描述】:
我正在学习用 C 编程,并且正在做一个小项目:图书馆管理软件。我遇到的问题是使搜索功能起作用。我知道如果我处理大量数据,我的代码非常简单且效率低下,但既然情况并非如此,我认为它应该可以工作。 这是我写的函数:
void search_for_book (FILE *BooksFile) {
BooksFile = fopen("Data.txt", "a+");
char book_title[100], test_book[100], author[100], category[100];
int answer, status, more_books;
more_books: // To search for more books
printf("Type the title of the book you would like to look for:\n");
scanf("%s", book_title);
while(!feof(BooksFile)){
fscanf(BooksFile, "%s", test_book);
if(strcmp(book_title, test_book) == 0) { // strcmp returns zero if strings are equal
printf("The book you informed was found.\n");
printf("Do you want to see its information? Type 1 for yes and 2 for no.\n");
scanf("%d", &answer);
if (answer == 1) { // User wants information
fscanf(BooksFile, "%s", author);
fscanf(BooksFile, "%s", category);
fscanf(BooksFile, "%d", &status);
printf("Book's title: %s\n", book_title);
printf("Book's author: %s\n", author);
printf("Book's category: %s\n", category);
printf("Book's status: %d\n", status);
break;
} else { // User doesn't want information
printf("Would you like to search for another book? Type zero if that's the case.\n");
scanf("%d", &more_books);
if (more_books == 0) {
goto more_books;
}
break;
}
}
}
}
我的代码有什么问题,我该如何解决?当我调用这个函数时,程序只执行 printf(要求输入书名),然后简单地返回主函数,不搜索任何内容。
【问题讨论】:
-
首先在 c 中避免
goto。使用goto在内部/外部循环之间跳转很危险吗?它是如何工作的? -
您可以尝试告诉(请在问题中)什么看起来不正在工作,或者工作不同你期待。
-
发送到代码审查部分。
-
你犯了什么错误?更多解释请? (例如:我在 blabla 行有指针错误)
-
我并没有真正得到错误。当我调用该函数时,程序会执行 printf(要求输入书名)并且不会搜索该书