C에서, 표준 출력에 인쇄하는 것은으로, 쉽게 printf
에서 stdio.h
.
그러나 어떻게 stderr로 인쇄 할 수 있습니까? 우리는 fprintf
분명히 그것을 달성하기 위해 사용할 수 있지만 구문이 이상하게 보입니다. printf
stderr로 인쇄하는 데 사용할 수 있습니까?
fprintf
.
C에서, 표준 출력에 인쇄하는 것은으로, 쉽게 printf
에서 stdio.h
.
그러나 어떻게 stderr로 인쇄 할 수 있습니까? 우리는 fprintf
분명히 그것을 달성하기 위해 사용할 수 있지만 구문이 이상하게 보입니다. printf
stderr로 인쇄하는 데 사용할 수 있습니까?
fprintf
.
답변:
구문은 printf
. 함께 printf
사용하면 문자열 형식을주고 그 내용은 즉 :
printf("my %s has %d chars\n", "string format", 30);
으로 fprintf
는 동일합니다, 당신은 또한 인쇄 할 수있는 장소를 지정하는 지금 다음을 제외
File *myFile;
...
fprintf( myFile, "my %s has %d chars\n", "string format", 30);
또는 귀하의 경우 :
fprintf( stderr, "my %s has %d chars\n", "string format", 30);
#include<stdio.h>
int main ( ) {
printf( "hello " );
fprintf( stderr, "HELP!" );
printf( " world\n" );
return 0;
}
$ ./a.exe
HELP!hello world
$ ./a.exe 2> tmp1
hello world
$ ./a.exe 1> tmp1
HELP!$
stderr은 일반적으로 버퍼링되지 않으며 stdout은 일반적으로 있습니다. 이로 인해 이와 같이 이상하게 보이는 출력이 발생하여 코드가 잘못된 순서로 실행되고 있음을 알 수 있습니다. 아닙니다. stdout 버퍼가 아직 플러시되지 않은 것입니다. 리디렉션되거나 파이프 된 스트림은 일반적으로 stdout 또는 stderr의 출력 만 볼 수 있으므로이 인터리브를 볼 수 없습니다.
처음에는 stdout과 stderr이 모두 콘솔에 제공되지만 둘 다 분리되어 개별적으로 리디렉션 될 수 있습니다.
알고 sprintf
계십니까? 기본적으로 fprintf
. 첫 번째 인수는 대상 ( fprintf
ie 의 경우 파일 stderr
)이고 두 번째 인수는 형식 문자열이며 나머지는 평소와 같이 인수입니다.
나는 또한 이 printf
(및 가족) 참조를 추천 합니다 .
컨텍스트를 인쇄하려면 다음과 같은 코드를 작성할 수 있습니다.
FILE *fp;
char *of;
sprintf(of,"%s%s",text1,text2);
fp=fopen(of,'w');
fprintf(fp,"your print line");