2014-05-10 3 views
1

좋아요, 코드 요리사의 문제를 해결하고있었습니다 (매우 쉽습니다). 간략한 내용은 다음과 같습니다.fflush (stdin) before() in c

-A 문자열이 주어지고 질문 문자열에 사용 된 문자가없는 다른 문자열이 생성되어야합니다. 대문자와 소문자는 동일하다고 가정합니다.

- 모든 알파벳이 사용 된 경우 ~ 기호 만 인쇄하십시오.

필자의 입력에서 오류가 발생하고 이것이 gets() 전에 fflush (stdin)를 사용했기 때문에 논리가 정확합니다. 이 오류가 왜 발생했는지 설명하십시오. 나머지 코드는 무시하십시오. 문제

링크 : http://www.codechef.com/problems/NOLOGIC/

링크 잘못 솔루션 : http://www.codechef.com/viewsolution/3881817

링크 수정 솔루션 : http://www.codechef.com/viewsolution/3881827

Pls는 참고 : 수정 코드에서 난 단지 FFLUSH를 사용하지 않는 변화를 (만든 표준 입력) 및 getchar() 사용

+6

'fflush'는 입력 스트림이 아닌 출력 스트림에 사용하기위한 것입니다. http://stackoverflow.com/questions/2979209/using-fflushstdin/2979217#2979217 –

+2

fflush (stdin)은 정의되지 않은 동작입니다. – Martin

+0

@RSahu & scy7he, 구현에 따라 다릅니다. 예를 들어 Linux의 경우 : "입력 스트림의 경우 fflush()는 기본 파일에서 가져 왔지만 응용 프로그램에서 사용하지 않은 버퍼링 된 데이터를 삭제합니다. 스트림의 열린 상태는 영향을받지 않습니다." [http://linux.die.net/man/3/fflush] –

답변

2

fflush(stdin)의 동작은 구현에 따라 다릅니다. (이 질문에 대한) 구현이 알려지지 않았기 때문에 그 행동 또한 알려지지 않을 것입니다.

fflush(stdin)의 동작을 예측할 수 있습니다.

관련 문제