如何将0x00写入文件

时间:2013-05-21 12:43:26

标签: c cocoa posix stringstream

我正在编写一些应用程序,它将与我的自定义USB串行设备进行通信(只写)。它是Cocoa(OS X)应用程序,与本文相关的部分以POSIX风格编码。

我已解决了所有问题,但遇到了NULL(0x00)字符的问题。

例如,让我说我需要将5个字符加到文件中。

我的代码如下:

char stringAsChar[5];

stringAsChar[0] = 0x77;
stringAsChar[1] = 0x44;
stringAsChar[2] = 0x00; //here is an problem
stringAsChar[3] = 0x05;
stringAsChar[4] = 0xFF;
...
fputs(stringAsChar, file); // write to file

指定索引处的每个字符表示某些寄存器到目标设备的数据。

当流包含0x00字符时,我需要将其作为数据,在那里停止写入(0x00被解释为流的停止)。

如何克服这个问题?

3 个答案:

答案 0 :(得分:4)

请尝试使用fwrite。它允许您指定写入流的字节数。或者遍历您的角色并使用fputc

答案 1 :(得分:3)

fputs()使用以null结尾的字符串。您不能在C字符串中嵌入NULL,因为它是终止符。您可以使用fputc()将NULL字节写入文件。

答案 2 :(得分:3)

fputsNUL一起使用 - 终止字符串。如果要将NUL个字符写入文件,可以使用fwrite代替:

noOfBytesWritten = fwrite(stringAsChar, 1, noOfBytesToWrite, file);