C
에서 프로그래밍을 배우고 있습니다. 왜 아무 것도 여기에 인쇄되지 않는 이유를 설명해 주시겠습니까? 미리 감사드립니다. 만약 출력이 대신에 즉시 인쇄되는 버퍼에 배치 printf
를 호출 할 때 여러 시스템에서 printf
"printf"가 작동하지 않는 이유는 무엇입니까?
#include <stdio.h>
int main (void)
{
char a[]="abcde";
printf ("%s", a);
}
C
에서 프로그래밍을 배우고 있습니다. 왜 아무 것도 여기에 인쇄되지 않는 이유를 설명해 주시겠습니까? 미리 감사드립니다. 만약 출력이 대신에 즉시 인쇄되는 버퍼에 배치 printf
를 호출 할 때 여러 시스템에서 printf
"printf"가 작동하지 않는 이유는 무엇입니까?
#include <stdio.h>
int main (void)
{
char a[]="abcde";
printf ("%s", a);
}
, 즉 완충된다. 새 줄 \n
을 인쇄 할 때 버퍼가 플러시됩니다 (출력이 인쇄 됨).
모든 시스템에서 프로그램이 끝날 때 버퍼가 비워 지므로 \n
이 누락 되었음에도 불구하고 프로그램이 인쇄됩니다. 출력이 즉시 버퍼를 플러시 fflush
를 호출하는 것입니다 얻을
printf ("%s\n", a);
다른 방법 :
일반적으로 여전히 \n
등을 추가합니다. 남자 페이지에서 : 출력 스트림에 대한
는 FFLUSH() 스트림의 기본 write 함수를 통해 주어진 출력이나 업데이트 스트림에 대한 모든 사용자 공간 버퍼링 된 데이터의 쓰기를 강제로.
출처 : http://man7.org/linux/man-pages/man3/fflush.3.html
편집으로
@Barmar에 의해 지적은 프로그램이 종료 될 때 버퍼 플러시 필요가있다 @Alter 맨 인용. @Alter 맨에서
인용구 :
프로그램 종료 전에 주요 기능은 원래의 호출자에게 반환하거나 종료 함수가 호출되는 경우, 열려있는 모든 파일 (따라서 모든 출력 스트림을 플러시) 폐쇄하는 경우 .
문자열 또는 형식으로 "\ n을"을 추가를 참조하십시오. - >>'printf ("% s \ n", a); ' – wildplasser
왜 출력되지 않습니까? –
아니면'fflush (stdout);'printf' 다음에 –