C에서 stderr로 인쇄하려면 어떻게 해야 하는가?
C에서는 stdout으로 인쇄하는 것이 쉬우며,printf
로부터stdio.h
.
그러나, 어떻게 더 stderr에 인쇄할 수 있을까?우리는 사용할 수 있다.fprintf
분명히 그것을 성취하기 위해서, 그러나 그것의 구문은 이상하게 보인다.아마도 우리는 사용할 수 있을 것이다.printf
인쇄할 수 있는 거야?
구문은 와 거의 같다.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);
stdout 및 stderr에 대한 형식화된 출력의 몇 가지 예:
printf("%s", "Hello world\n"); // "Hello world" on stdout (using printf)
fprintf(stdout, "%s", "Hello world\n"); // "Hello world" on stdout (using fprintf)
fprintf(stderr, "%s", "Stack overflow!\n"); // Error message on stderr (using fprintf)
#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 buffer가 아직 빨개지지 않았을 뿐이야.리디렉션되거나 파이프로 연결된 스트림은 일반적으로 stdout의 출력만 보거나 stderr의 출력만 볼 수 있기 때문에 물론 이러한 인터리브를 볼 수 없을 것이다.
처음에는 stdout과 stderr가 모두 콘솔로 오지만, 둘 다 분리되어 있고 개별적으로 리디렉션될 수 있다.
현재 코드를 수정하지 않고 디버그 사용에만 사용할 경우.
이 매크로 추가:
#define printf(args...) fprintf(stderr, ##args)
//under GCC
#define printf(args...) fprintf(stderr, __VA_ARGS__)
//under MSVC
변화하다stderr
로stdout
뒤로 굴러가고 싶으면
디버그에는 도움이 되지만 좋은 연습은 아니다.
아십니까sprintf
? 그것은 기본적으로 같은 것이다.fprintf
. 첫 번째 인수는 대상(의 경우 파일)이다.fprintf
즉stderr
)), 두 번째 인수는 형식 문자열이며, 나머지는 평소와 같이 인수한다.
나는 또한 이 (그리고 가족)의 참조를 추천한다.
컨텍스트를 인쇄하려면 다음과 같이 코드를 작성하십시오.
FILE *fp;
char *of;
sprintf(of,"%s%s",text1,text2);
fp=fopen(of,'w');
fprintf(fp,"your print line");
참조URL: https://stackoverflow.com/questions/39002052/how-i-can-print-to-stderr-in-c
'Programing' 카테고리의 다른 글
Java int to String - Integrity.toString(i) 대 새 정수(i.toString() (0) | 2022.04.16 |
---|---|
라라벨믹스 웹팩 공용 경로 (0) | 2022.04.16 |
시스템을 언제 불러야 할까?자바로 퇴장하다 (0) | 2022.04.16 |
Vue 클래스 기반 구성 요소 경고: 속성이 인스턴스에서 정의되지 않고 렌더링 중에 참조됨 (0) | 2022.04.16 |
더블이 NaN과 동일한지 확인하기 위해 어떻게 테스트하는가? (0) | 2022.04.16 |