2016-08-01 5 views
-4

program source code OS/X에서 C에서 fflush은 어떻게 사용해야합니까? 사용하면 버퍼를 지우지 않고 바로 프로그램을 종료합니다.OS/X의 f에서 fflush를 사용하는 방법

+4

'stdin'에 대해 fflush-ed를하지 마십시오 .... [정의되지 않은 동작] (https://en.wikipedia.org/wiki/Undefined_behavior)을 호출합니다. –

+2

코드를 [mcve]로 표시하십시오 (또는 모든 수정 구슬을 구입하십시오). – kaylum

답변

0

fflush(stdin);을 호출하면 정의되지 않은 동작이 호출됩니다. 이것을 표준 입력 버퍼에서 플러시 문자로 사용해서는 안됩니다. 대신, 당신은 다음 라인 피드 개까지 문자를 읽고 무시를 할 수 있습니다 : 당신은이에 대한 scanf()을 사용할 수 있습니다

int c; 
while ((c = getchar()) != EOF && c != '\n') 
    continue; 

하지만 까다 롭습니다 :

scanf("%*^[\n]"); // read and discard any characters different from \n 
scanf("%*c");  // read and discard the next char, which, if present, is a \n 

참고가이 전화를 결합 할 수 있습니다 왜냐하면 첫 번째 형식이 실패하기 때문에 다른 문자가없는 줄 넘김을 읽지 못하기 때문입니다.