아무 것도 가리 키지 않는 C 스트림 개체 (FILE*
개체)를 얻을 수있는 방법이 있습니까?FILE * 아무데도 안 간다
나는 fopen("/dev/null","w");
이 작동하지만 더 좋은 방법이 있는지 궁금합니다.
비트는 posix 레이어보다 높은 수준에서 데이터를 버킷으로 전송하는 것이 바람직하며 이식성 또한 좋습니다.
아무 것도 가리 키지 않는 C 스트림 개체 (FILE*
개체)를 얻을 수있는 방법이 있습니까?FILE * 아무데도 안 간다
나는 fopen("/dev/null","w");
이 작동하지만 더 좋은 방법이 있는지 궁금합니다.
비트는 posix 레이어보다 높은 수준에서 데이터를 버킷으로 전송하는 것이 바람직하며 이식성 또한 좋습니다.
아니요 : Unix에서는 /dev/null
이고 Windows에서는 NUL:
(Cygwin이 없거나 동등하지 않은 경우)이 최선의 방법입니다.
fopen("/dev/null","o");
언급하지만 사람 고정되었다.)
fopen()
에
"o"
플래그가 비 - 휴대용이다. 이식 가능한 형식은 다양한 조합의 플래그 문자
r
,
w
,
a
,
b
,
+
을 포함합니다.
"o"플래그는 무엇을합니까? 그것은 나의 맨 페이지에 있지 않다 –
"O"K, 나는 내가 그것을 봐야했다라는 것을 알고 있었다. 나는 기억에서 일하고 있었다. – BCS
@Anacrolix : 나는 무엇이 '잘'할 수 없다. 그것은 휴대용이 아니며 내가 사용할 수있는 시스템에는 적용되지 않습니다 ... 나는 'w'의 변종으로 의도 된 것이라고 생각합니다. –
stderr로 이동하는 일부 로그인이 있으며 플래그로 해제 할 수 있기를 원합니다. 정말 오히려 인 fprintf 전달되는 변수를 변경할 것보다 더 많은 작업을 수행 할 필요가 없습니다 것
A) 래퍼 기능
logging = TRUE;
void debugprint(...)
{
if (logging)
{
fprintf(stderr, ...);
}
}
b)는 당신이 그것을 주면 fprintf를 반환 생각 널 포인터. 기억이 안나요. 한번 해보십시오. 그럼 당신이 할 일은 포인터를 변경하는 것입니다 :
왜 이것을해야합니까? 당신이하려고하는 것을 할 수있는 더 좋은 방법이있을 것입니다. – Andrey
나는'stderr'에 들어가는 로깅을 가지고 있는데 플래그로 해제 할 수 있기를 원합니다. 'fprintf'에 전달되는 변수를 변경하는 것보다 더 많은 것을 할 필요가 없습니다. – BCS
http://stackoverflow.com/questions/1741191/creating-a-file-stream-that-results-in-a-string과 유사합니다. stdio 구현은 항상 그런 것들을 지원하는 것 같지만 API는 그것을 사용하는 좋은 방법을 제공하지 않습니다. – Edmund