这是选择:
printf("\t1. Add new book record");
printf("\n");
printf("\t2. Edit book title");
printf("\n");
printf("\t3. View all the books");
printf("\n");
printf("\t4. View a specific book");
printf("\n");
printf("\t5. Delete a book");
printf("\n");
printf("Your choice:\t");
scanf("%d", &ch);
printf("\n");
之后根据用户的输入进入另一个功能。除了添加新书记录外,其他一切工作正常。该程序跳过第一个fgets(),其中要求用户输入书的编号,而是直接转到第二个fgets(),它可以正常工作。
以下是获取信息的代码:
void getInfo(BOOK *data)
{
printf("Enter Book Number: ");
fgets((*data).bkNum,M, stdin);
printf("Enter Book Title: ");
fgets((*data).bkTitle, M, stdin);
printf("Enter Book Author: ");
fgets((*data).bkAuthor, M, stdin);
printf("Enter Book Copyright: ");
scanf("%d", &(*data).bkCopyright);
return;
}
答案 0 :(得分:2)
您的scanf
调用会在输入缓冲区中留下换行符,然后由第一个fgets
调用消耗掉。在致电fgets
之前,您需要吃掉那个角色。