我是一名初学者,我正在尝试使用库管理系统thingy,它出现错误出现(Debug Assertion Failed
),并且表达式为(file_name!= nullptr )。调试断言失败(file_name!= nullptr)
当我在主菜单是,当我选择了第一个选项,这个错误就出来了,所以我需要帮助,感谢:
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
#define _CRT_SECURE_NO_WARNING
int AddNewBook(librecord);
int Exit();
struct
{
int id;
char title;
char edition;
int year;
char location;
char price;
int status;
}book;
FILE *librecord;
char book_id;
char book_title;
char book_edition;
char book_year;
char book_location;
char book_price;
char confirmation;
int no_value;
int main(void)
{
printf(" ** *** *** ********** \n");
printf(" ** **** **** ********** \n");
printf(" ** ** ** ** ** *** \n");
printf(" ** ** ** ** ** ********** \n");
printf(" ** ** ** ** ** *** \n");
printf(" ******* ** **** ** ********** \n");
printf(" ******* ** ** ** ********** \n");
printf("\n");
printf(" Welcome to Library Management System \n");
printf("\n");
printf(" MAIN MENU \n");
printf("\n");
printf(" 1. Add New Book \n");
printf(" 2. Edit Book Information \n");
printf(" 3. Delete Book \n");
printf(" 4. View Book List \n");
printf(" 5. Book Check-In \n");
printf(" 6. Book Check-Out \n");
printf(" 7. Search \n");
printf(" 8. Exit \n");
int choice;
printf("\n Please enter a number: ");
scanf_s("%d", &choice);
switch(choice)
{
case 1:
system("cls");
AddNewBook(librecord);
break;
case 8:
Exit();
default:
printf("Wrong Input !!! Please re-enter a number!!! \n");
system("pause");
system("cls");
main();
}
}
int AddNewBook(FILE *librecord)
{
librecord = fopen(librecord, "ab+");
printf("\n");
printf(" ADD NEW BOOK \n");
printf("\n");
printf(" Book ID: ");
scanf_s(" %d", &book.id);
fflush(stdin);
strcpy(book.id, book_id);
printf("\n Title: ");
scanf_s(" %s", &book.title);
fflush(stdin);
strcpy(book.title, book_title);
printf("\n Edition: ");
scanf_s(" %s", &book.edition);
fflush(stdin);
strcpy(book.edition, book_edition);
printf("\n Year of Publication: ");
scanf_s(" %d", &book.year);
fflush(stdin);
strcpy(book.year, book_year);
printf("\n Shelf Location: ");
scanf_s(" %s", &book.location);
fflush(stdin);
strcpy(book.location, book_location);
printf("\n Price(RM): ");
scanf_s(" %s", &book.price);
fflush(stdin);
strcpy(book.price, book_price);
printf("Confirm? (Y/N) \n");
scanf("%c", &confirmation);
}
int Exit()
{
exit(0);
}
调试断言失败!
计划:...发言:\的Visual Studio 2015年 \项目\ Project9 \调试\ Project9.exe文件: minkernel \ CRT显示器\ ucrt的\ src \ appcrt \标准输入输出\ fopen.cpp行:30
表达式:file_name!= nullptr
有关程序如何导致断言失败的信息,请参阅有关断言的Visual C++文档。
(按重试来调试应用程序)
不相关,但'fflush(stdin)'是未定义的行为。 –