此代码用C语言编写。当我编译并在菜单上选择1
,然后输入要求的详细信息时,它并没有问我是否要添加另一本书。
“您要添加其他图书吗?” 和 “如果要添加类型'Y'或将菜单返回到'N'”
我认为这是缓冲区问题,因此我添加了fflush(stdin)
;但这没用...
怎么了,怎么解决?
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <stdlib.h>
int count = 0;//책 갯수 세기(for count book)
char name[500][100] = { 0 }, writer[500][50] = { 0 }, publisher[500][50] = { 0 },
date[500][10] = { 0 }, memo[100][500] = { 0 };
unsigned int price[500][1] = { 0 };
char choice = 0;//getch 함수 선택 받기(take choice by getch())
void menu(void);
void search(void);
void add(void);
void del(void);
void save(void);
void list(void);
void memo_fun(void);
int main(void)
{
menu();
return 0;
}
void menu(void)
{
system("cls");
//i am sorry it's diffrent shape from my visual stdio it was square shape(down printf_s)
printf_s("\t\t□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□\n");
printf_s("\t\t□■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■□\n");
printf_s("\t\t□■□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□■□\n");
printf_s("\t\t□■□ □■□\n");
printf_s("\t\t□■□ □■□\n");
printf_s("\t\t□■□ menu □■□\n");
printf_s("\t\t□■□ □■□\n");
printf_s("\t\t□■□ □■□\n");
printf_s("\t\t□■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■□\n");
printf_s("\t\t□■□ □■□\n");
printf_s("\t\t□■□ 1. Add book □■□\n");
printf_s("\t\t□■□ □■□\n");
printf_s("\t\t□■□ 2. 도서 검색 □■□\n");
printf_s("\t\t□■□ □■□\n");
printf_s("\t\t□■□ 3. 도서 삭제 □■□\n");
printf_s("\t\t□■□ □■□\n");
printf_s("\t\t□■□ 4. 저장 □■□\n");
printf_s("\t\t□■□ □■□\n");
printf_s("\t\t□■□ 5. 도서 목록 출력 □■□\n");
printf_s("\t\t□■□ □■□\n");
printf_s("\t\t□■□ 6. 메모장 열기 □■□\n");
printf_s("\t\t□■□ □■□\n");
printf_s("\t\t□■□ 7. 프로그램 종료 □■□\n");
printf_s("\t\t□■□ □■□\n");
printf_s("\t\t□■□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□■□\n");
printf_s("\t\t□■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■□\n");
printf_s("\t\t□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□\n");
choice = _getch();
switch (choice)
{
case '1':
add();
break;
case '2':
search();
break;
case '3':
del();
break;
case '4':
save();
break;
case '5':
list();
break;
case '6':
memo_fun();
break;
case '7':
exit(0);
default: //다른키 입력시
menu();
}
menu();
}
void add(void)
{
system("cls");
printf_s("\t\t□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□\n");
printf_s("\t\t□■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■□\n");
printf_s("\t\t□■□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□■□\n");
printf_s("\t\t□■□ □■□\n");
printf_s("\t\t□■□ □■□\n");
printf_s("\t\t□■□ Add book □■□\n");
printf_s("\t\t□■□ □■□\n");
printf_s("\t\t□■□ □■□\n");
printf_s("\t\t□■□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□■□\n");
printf_s("\t\t□■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■□\n");
printf_s("\t\t□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□\n");
printf_s("\n\t\t▶도서명을 입력해 주세요.\n\t\t▶");//Enter the book name
fgets(name[count], sizeof(name[count]), stdin);
printf_s("\n\t\t▶도서 저자를 입력해 주세요.\n\t\t▶");//Enter the book writer
fgets(writer[count], sizeof(writer[count]), stdin);
printf_s("\n\t\t▶도서의 출판사를 입력해 주세요.\n\t\t▶");//Enter the book publisher
fgets(publisher[count], sizeof(publisher[count]), stdin);
printf_s("\n\t\t▶도서의 출판일을 입력해 주세요.\n\t\t▶");//Enter the book date
fgets(date[count], sizeof(date[count]), stdin);
printf_s("\n\t\t▶도서의 가격을 입력해 주세요.\n\t\t▶");//Enter the book price
scanf_s("%d", price[count]);
count++;
printf_s("\n\t\t▶다른 도서도 등록하시겠습니까?\n");//Do you want add other book?
printf_s("\\t\t▶등록하시려면 Y를 메인메뉴로 돌아가시려면 N을 눌러주세요.\n");//If you want add type 'Y' or return menu to 'N'
choice = _getche();
if (choice == 'Y' || choice == 'y')
add();
else if (choice == 'N' || choice == 'n')
menu();
}
void search(void)//i can't code down there yet...
{
}
void del(void)
{
}
void save(void)
{
}
void list(void)
{
}
void memo_fun(void)
{
}
答案 0 :(得分:-1)
您有:
char choice = 0;
尝试:
int choice = 0;
原因:
_getch() returns an int and not a char
或被起诉:
replace _getch() for getchar();