programing

이진 모드에서 stdout을 쓰기 위한 가장 간단한 방법은 무엇입니까?

topblog 2023. 10. 25. 21:59
반응형

이진 모드에서 stdout을 쓰기 위한 가장 간단한 방법은 무엇입니까?

나는 C 프로그램에서 stdout을 위해 이진 데이터를 작성하는 가장 좋은 방법을 찾으려고 노력해왔습니다.Linux에서는 잘 작동하지만 Windows에서 컴파일할 때 "\n"이 "\r\n"으로 변환되므로 문제가 발생합니다.

새 줄 변환을 피하는 일종의 이진 모드에서 stdout을 쓰기 위한 표준 방법이 있습니까?그렇지 않다면 Windows에서 이 작업을 중지하는 가장 간단한 방법은 무엇입니까?

저는 GCC와 MinGW를 사용하고 있고, 글을 쓰고 있습니다.stdout사용.fwrite.

사용가능setmode(fileno(stdout), O_BINARY)

Linux와 호환되도록 하려면 ifdef로 포장합니다.

참고 항목: https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/setmode?view=vs-2017

다음과 같은 작업을 수행할 수 있습니다(크로스 플랫폼의 일종).

FILE *const in = fdopen(dup(fileno(stdin)), "rb");
FILE *const out = fdopen(dup(fileno(stdout)), "wb");
/* ... */
fclose(in);
fclose(out);

아니면 사용해도 좋습니다.write()그리고.read()시스템 호출과 직접적으로fileno(stdin)그리고.fileno(stdout). 이러한 시스템 호출은 하위 레벨에서 작동하며 어떠한 변환도 수행하지 않습니다.하지만 그들은 또한 당신이 얻는 버퍼링을 가지고 있지 않습니다.FILE냇물

언급URL : https://stackoverflow.com/questions/16888339/what-is-the-simplest-way-to-write-to-stdout-in-binary-mode

반응형