2013-01-12 4 views
1

가능한 중복 :
Using fflush(stdin)fflush (stdin)이 작동하지 않는 이유는 무엇입니까?

내 코드는 다음과 같습니다

scanf("%d", &_choice); 
fflush(stdin); 
gets(input); 

내가 scanf 후 왼쪽 된 '\n' 문자를 제거하는 fflush(stdin);를 사용합니다.

그러나 나는 작동하지 않으며, gets은 자동으로 '\n' char을 사용하고 계속됩니다.

내가 대신 fflushgetchar()를 사용하여 그것을 해결하지만 fflush 작업 ...

편집하지 않았다 난 아직도 왜 알아낼 수 없습니다 : 지금 이해 fflush 출력 스트림만을위한 것입니다. 그러나 "청소"명령이 있습니까? stdin은 쓰레기입니까?

+1

그것은 정의되지 않은 동작입니다 ... "\n 문자를 제거"아닙니다. 기간. – Mysticial

+0

또한 gets()를 사용하고 있습니다. 하지마. 대신 fgets()를 사용하십시오. – milleniumbug

+0

@milleniumbug 나는 마지막'\ n '문자를 제거하고 싶지 않다. – cookya

답변

4

fflush은 출력 스트림을위한 것이기 때문에.

그리고 어떤 속도로

, fflush

+0

그러면'fflush (stdin)'은 무엇을합니까? 그리고'\ n' 문자를 stdin/stdout에서 어떻게 옮길 수 있습니까? – cookya

+1

@cookya 오류입니다. 'fflush'는 버퍼링 된 데이터 (즉, 아직 기입되지 않은 데이터)를 지정된 출력 스트림에 씁니다. 'stdin'은 출력 스트림이 아닙니다. – melpomene

+1

@cookya : 정의되지 않은 동작입니다. 어떤 일이든 일어날 수있다. –

관련 문제