어떤 이유로이 작은 프로그램을 컴파일하면 "printf ("done ")"줄이 실행되지 않고 이유를 알 수 없습니다. 원래 내 print 문 앞에 if 블록이 있었고 실행되지 않았습니다. gdb를 통해 실행하고 단계별로 시도했습니다. 라인을 찾았지만 실행하지 않았습니다. gcc 4.7.2를 사용하여 컴파일하려고하는데 gedit 3.4.2를 텍스트 편집기로 사용하고 있습니다.
컴파일하는 데 사용하는 명령은 다음과 같습니다.
gcc teststuff.c -o test
그리고 여기에 코드가 있습니다
#include <stdio.h>
void testmethod()
{
int sign = 1;
printf("hello\n");
printf("%d\n",sign);
printf("done");
}
main(void)
{
testmethod();
return 0;
}
아무도 왜 코드의 해당 부분을 건너 뛰는 지 아이디어가 있습니까? 감사!
끝에 줄 바꿈을 넣으십시오.
printf("done\n");
표준 출력은 종종 라인 버퍼링됩니다. 즉, 작성한 데이터는 라인을 완료 한 후에 만 화면에 플러시됩니다 (with와 같이 명시 적으로 플러시하지 않는 한 fflush()
). 그러나 프로그램이 종료 될 때 플러시되어야합니다 (하지만 반드시 프로그램이 종료 되기 전에는 아님 ).
또한 셸에 따라 프로그램이 줄 바꿈없이 데이터를 쓰는 경우 출력 상단에 명령 프롬프트가 표시 될 수 있습니다.
my-computer ~/projects/my-program $ ./a.out
hello
1
donemy-computer ~/projects/my-program $
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다