2013-10-25 9 views
0

다음과 같은 방법으로 fprintf을 사용하고 있습니다. 모든 것이 괜찮은 것 같지만 fprintf은 내 파일에 전혀 인쇄하지 않습니다! 이상하다fprintf 함수가 작동하지 않지만 양수를 반환합니다.

fprintf(pFile, "%s\n", "print"); 

뭔가 그 fprintf 반환 OK입니다. 위의 코드에서 6을 반환하지만 파일로 인쇄하지는 않습니다!

파일은 성공적으로 만들어졌지만 비어 있습니다.

printf으로 변경하면 OK도 인쇄됩니다.

+0

어떻게 pFile을 열었습니까? 파일을 열 때 반환 값을 확인 했습니까? – Claudio

+0

파일을 여는 코드를 보여주십시오. –

+3

'fclose'를 부르시겠습니까? 그렇지 않은 경우 버퍼가 플러시되지 않을 수 있습니다! – caspase

답변

3

fprintf 다른 stdio 출력 함수는 버퍼링됩니다. 즉, 출력이 메모리에 먼저 저장되고 나중에 인쇄 될 때까지 실제로 인쇄되지 않습니다. 표준 출력을 사용하여 화면에 인쇄 할 때 각 줄이 버퍼를 플러시하므로 printf을 사용하면 즉시 출력을 볼 수 있지만 파일에 인쇄 할 때 버퍼는 사용자가 4096 바이트 등으로 쓸 때까지 플러시되지 않습니다. 어떤 이유로 출력이 파일에 빨리 나타나야하는 경우 fflush(pFile);을 추가하여 버퍼를 플러시 할 수 있습니다.

fclose을 호출 할 때 버퍼가 플러시되거나 프로그램을 올바르게 종료하여 파일을 암시 적으로 닫지 만 파일을 닫지 않고 프로그램이 계속 실행되거나 충돌하는 경우에는 fflush의 출력을 확인해야합니다. 파일.

+0

감사합니다. 그것은 나를 도왔다. :) –