hj_d   7년 전

소스가 아래와 같은데요, 그냥 char 로 입력 받아서 파싱 한다음 출력 하였는데,

예제는 잘 나오고 틀린거는 없어 보이는데 어떤 문제가 있을까요? 궁금 합니다.

물론 제가 틀려서 그렇긴 하겠지만... 알려주세요

allkanet72   7년 전

c언어는 잘 모르지만
입력버퍼 문제같습니다. 입력버퍼에 엔터(\n)까지 포함되서 넘어가네요.
근데 이걸 해결하면 알고리즘이 정상적으로 작동안하네요.
아마 예제 잘나오신것은 엔터까지 넘어가서 while 문으로  우연히 진입하여 잘나온것처럼 보인것 같습니다.
그리고 while문 빠져나가는 조건이 없네요.

testcase가 0 입력됐을때 문장입력을 받으면 안됩니다.



hj_d   7년 전

음... 죄송 한데 무슨 말인지 잘 모르겠어요. '\n' 까지 포함되서 넘어 간다는게 scanf("%d\n", &t); 이거 말씀 하시는건가요? 여기에 \n을 안 넣으면

c에 '\n'이 들어가버리기 때문에 넣었고 testcae가 0 일때는 while(0) 이기 때문에 while문에 들어가지 않아요...ㅜㅜ

제가 잘못 이해하고 있는건가요?


allkanet72   7년 전

위 코드에서 0 입력해보세요. 바로 함수를 종료해야하지만 여전히 프로그램 실행중입니다.

엔터가 입력버퍼에 남아있어서 발생하는 현상입니다. 


위 제기하신 문제는 버퍼를 초기화하는 방법이 있습니다. 제가 c언어를 예전에 배워서 가물가물한데 여러가지 방법이 있습니다.

getchar()를 한번더 적어서 버퍼 초기화 한는 방법도 있구요.

맞은분들 보니까 getchar를  한번 더 사용해서 문제를 해결했군요

hj_d   7년 전

그렇네요 0 입력 하면 프로그램이 종료가 안되네요.

그런데 그거 수정 해도 문제가 있네요 ㅜㅜ

kke0949   7년 전

저도 비슷한 문제로 방금까지 고통받았습니다.

문장 출력할 때 마지막에 널문자 출력 안하면 정답으로 뜨더라구요...

hj_d   7년 전

감사합니다.

댓글을 작성하려면 로그인해야 합니다.