我的职能
void myFunction (FILE *f);
获取已经打开的文件。我需要写入一个字面值为CR+LF
,所以我想将f
的模式设置为二进制。
我该如何做到这一点?
void myFunction (FILE *f);
获取已经打开的文件。我需要写入一个字面值为CR+LF
,所以我想将f
的模式设置为二进制。
我该如何做到这一点?
#include <stdio.h>
#ifdef WIN32
#include <fcntl.h>
#include <io.h>
#endif
int SetBinary(FILE *pFile)
{
// set file mode to binary
#ifdef WIN32
return _setmode(_fileno(pFile), O_BINARY);
#else
return setmode(_fileno(pFile), O_BINARY);
#endif
}
看起来很丑,因此您可能需要有条件地#define
函数名称,但我认为它永远不会变得漂亮。
setmode
和 _fileno
,但它们也不需要,因为这不是 Windows(AFAIUI)。所以,你可能应该删除你的 #ifdef
中的 #else
部分。 - angus
setmode
(或_setmode
)是一个可能的选择? - Roger Rowland\r\r\n
这样的结果。 - Corbin_setmode
适用于Windows。在Windows上,POSIX等效的setmode
已被弃用(请参阅@Corbin的评论)。 - Roger Rowland