C 공부한지 얼마안된 좆늅인데요 ㅠㅠ
영화관 좌석 예약 프로그램인뎅 왜 메뉴에 2 넣고 인풋 알파벳 숫자 입력하면 프로그램이 죽죠 ㅠㅠㅠ
#include <stdio.h>
int a[10][10];
void sta();
void rsv();
int main()
{
int menu;
while (1) {
printf("1) 좌석 예약 현황\n2) 좌석 예약\n3) 프로그램 종료\n메뉴를 입력하세요: ");
scanf("%d", &menu);
if (menu == 1)
sta();
else if (menu == 2)
rsv();
else
break;
}
}
void sta()
{
int i, j;
printf(" 1 2 3 4 5 6 7 8 9 10\n ----------------------\n");
for (i = 0; i < 10; i++) {
printf("%c | ", i + 65);
for (j = 0; j < 10; j++) {
printf("%d ", a[i][j]);
}
printf("\n");
}
}
void rsv()
{
int j=0, i=0;
char ch=0;
printf("좌석을 입력하세요: ");
scanf("%c %d", &ch, &i);
i = ch - 64;
if (a[i - 1][j - 1] == 0) {
a[i - 1][j - 1] = 1;
printf("예약이 완료되었습니다.\n");
}
else if (a[i - 1][j - 1] == 1) {
printf("이미 예약된 자리입니다. 다른 좌석을 선택하세요.\n");
}
}
인풋은 꼭 알파벳 숫자여야함 영화관처럼 ㅎ
근데왜 i에 scanf받고나서 바로 i = ch-64 하는거임?
https://ideone.com/d0BMs5
안죽고 잘 되는걸요.
릴리즈모드로 하니 잘되네요
오잉 근데 왜 전 죽죠
i = ch - 64; 이게문제인데요
저걸 한번 지워보세요 그리고 잘되나확인해보시고, 어떻게짯는지는 제대로안봤는데
작동이 중지되었습니다. 뜨고 죽네 왜징
생각해보세용. scnaf(%c %d, &ch;, &i);해서 i에다가 좌석을받아놓고
바로 밑에다가 i = ch-64;를 쓰면
scanf로 받은 i는 무슨의미이며 어디로간것!?!? 기껏 scanf로 받아놓고 ch-64를 덮어쓸꺼면 무슨의미임?
헐 미친
헐;;;감사합니다;;;;내가무슨짓을
i = ch - 64는 아마 j를 쓰려다가 실수하신거겠죠?
입력버퍼에 위에서 엔터를 친게 남아있어서 그 값이 좌석에서 문자 받을떄 엔터값이 들어가서 그래요
릴리즈모드로 컴파일하면 되기야하죠 근데 님이원하는데로 안된다는건 입력한뒤에 출력해보면 아실꺼에요. 왜냐구요!? scanf("%c %d",&ch; &i); i = ch-64; 여기가 문제니까 잘생각해보샘
좌석에서 문자 받기전에 fflash(stdin);으로 버퍼 비우시고 하면 일단 ch 때문에 문제는 안생길거에요
그런것말고도 대충 쳐보니까 배열로 위치들어가는것도 위치가좀이상한데;; 손좀보셔야할듯
추가로 tip을 더드리자면 a라는 문자열을 입력받아서 0이라는 인덱스로 만들고싶은거잖아요? 이때 j = ch - 64 이런표현보다 j = ch - 'a'가 더예쁘지않을까요?
.. vs2015에서 fflash써도 입력버퍼가 안비워지네요;; 그냥 getc(stdin); 쓰셔서 엔터 받아서 버려버리세요...
입력버퍼 생각을 못하고 있었는데 전에는 %c 앞에 띄어쓰기 넣어서 scanf(" %c 일케써서 해결했었거든요 같은 방법으로 하니 잘 되네요 감사합니다!!
scanf 말고 cin 합시다!