c언어 프로그래밍 질문입니다.
글쓴이: alexei123 / 작성시간: 화, 2014/06/24 - 1:04오전
1 #include<stdio.h>
2
3 int main(void)
4 {
5 int k = 0;
6 char tempId[10] = {0};
7 char tempPw[10] = {0};
8 int n = 0;
9
10 while(1)
11 {
12 printf("<Menu>\n");
13 printf("1. Play game\n");
14 printf("2. Ranking\n");
15 printf("3. Exit\n");
16 printf("Select menu : ");
17 scanf ("%d", &n);
18
19 if(n == 1)
20 {
21 printf("<Login>\n");
22
23 printf("ID : ");
24
25 for(k = 0; k < 10; k++)
26 {
27 scanf("%c", &(tempId[k]));
28
29 if(tempId[k] == '\n')
30 break;
31 }
32
33 printf("PW : ");
34 for(k = 0; k < 10; k++)
35 {
36 scanf("%c", &(tempPw[k]));
37
38 if(tempPw[k] == '\n')
39 break;
40 }
41 }
42 }
43
44 return 0;
45 }
제가 id를 입력한다음 pw를 입력하려고 하는데
이 프로그램을 실행시키면면
1. Play game 2. Ranking 3. Exit Select menu : 1 ID : PW :
이렇게 뜹니다
ID를 입력하지도 않았는데 바로 PW로 넘어가는데 어떤게 잘못된 건가요??
Forums:


Select menu 입력 시
scanf에서 1개의 정수값을 받는데, 입력으로는 1 + 엔터가 들어가네요.
fflush 함수를 참조하심이
fflush 함수를 참조하심이 어떠실런지...
http://andyader.blogspot.kr/2013/09/fflush.html
scanf()는 입력이 일정한 format을 갖추어진
scanf()는 입력이 일정한 format을 갖추어진 경우에만 쓰는 것이 좋습니다. 사실 제 경험상, 아예 안 쓰는 것이 좋습니다.
사용자에게 입력을 받는 경우 (즉, 어떤 입력이 들어올지 전혀 예상할 수 없는 경우), fgets()로 읽고, sscanf()로 원하는 데이터를 얻는 것을 추천합니다.
아니면, fgets()로 읽고, strtok() 등을 써서 원하는 데이터를 얻을 수도 있습니다.
표준 함수만 써야 한다는 제약이 없다면, fgets() 대신, getline()을 쓰는 것이 더 좋습니다.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
+1
그 옛날에도 같은 문제를 호소하는 분들이 많았는데 지금껏 똑같은 걸 보면 참 재미있습니다. 특히 예전에는 책에도 왜 저렇게 되는 것인지 설명하는 경우가 잘 없어서 (책을 쓸 정도의 사람에게는 너무도 당연한 것이기 때문에 적지 않은 것이겠지만) 혼란이 더욱 가중되었죠. 요즘 책들은 어떤지 모르겠네요.
--
댓글 달기