[완료] C++ 좀 봐주세요...^^
만약 이런 문장이 있다고 했을때 아래 프로그램이 어떻게 실행되나요??
Arsize=10이라고 치고요
for(i=0;i
{
1 cout << i+1 << ": ";
2 cin.get(temp, 80);
3 while(cin && cin.get() !='\n')
4 {cout << "contunue" << endl;
5 contune;}
6 if(!cin || temp[0] == '\0')
7 {cout << "temp" << temp << endl;
8 break;}
9 else
0 {cout << "else" <
a sayings[i] = temp;}
}
숫자와 a는 임의로 붙인거고요
cout은 어떤 현상이 일어나는지 볼려고 넣은 겁니다.
1에서 1: 가 출력될꺼고
2에서 temp에 80자 길이의 문자를 입력받을 것이고
3에서 입력이 제대로 됐고 입력큐에 남아있는 값이 엔터가 아닐경우 while(4,5)문이 실행될거고 (맞나요?)
6에서 입력이 올바르지 않거나 temp[0]이 널문자 그러니깐 아무것도 입력이 없을시 7,8번이 실행되고
0번에서 else를 출력하고 마지막으로 a에서 sayings[i]에 temp값을 대입 시키잖아요
근데 여기서 3번의 while문이 없을시 2번에서 입력받고 남은 엔터가 계속 남아 다음번 루프때 6번 값이
참이 되어서 프로그램이 종료가 되잖아요
근데 3번 while문이 있을때도 continue라는 글자가 한번도 출력이 안된걸 보면 while문 안으로 한번도 안들어간다는건데
(while문 안의 continue를 없애도 프로그램에 아무런 문제가 없네요)
왜 while문이 없을 경우 제대로 실행이 되지 않나요?
감사합니다.^-^
code 태그로 감싸주세요 아래 "입력형식" 부분을
code 태그로 감싸주세요
아래 "입력형식" 부분을 참고해 주세요
피할 수 있을때 즐겨라! http://melotopia.net/b
아~~~~
감사합니다..^-^
code 태그로 감싸주세요 아래 "입력형식" 부분을
code 태그로 감싸주세요
아래 "입력형식" 부분을 참고해 주세요
수정하시지 않았기 때문에 코드가 잘려나가서 아무도 도와주지 못하겠네요.
cin이나 cin.get은 공백 전까지 읽고 버퍼에
cin이나 cin.get은 공백 전까지 읽고 버퍼에 공백문자를 남겨놓습니다.
while(cin && cin.get()!='\n')에 조건이 맞지않아 while문을 실행하진 않지만
호출하셨으므로 cin.get()에서 버퍼의 개행문자를 먹어치웁니다. 그러므로 그 이하코드가 정상적으로 작동하는것이고요.
아마 중간에 스페이스나 탭으로 공백을 여러개를 넣어보세요. 이해될 겁니다.
정말 감사합니다^^
많은거 배워갑니다 감사합니다^^
댓글 달기