我正在编写一些应用程序,它将与我的自定义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被解释为流的停止)。
如何克服这个问题?
答案 0 :(得分:4)
请尝试使用fwrite
。它允许您指定写入流的字节数。或者遍历您的角色并使用fputc
。
答案 1 :(得分:3)
fputs()
使用以null结尾的字符串。您不能在C字符串中嵌入NULL,因为它是终止符。您可以使用fputc()
将NULL字节写入文件。
答案 2 :(得分:3)
fputs
与NUL
一起使用 - 终止字符串。如果要将NUL
个字符写入文件,可以使用fwrite
代替:
noOfBytesWritten = fwrite(stringAsChar, 1, noOfBytesToWrite, file);