c++ - fwrite 输出字符串不正确

标签 c++ linux gcc fwrite fread

我目前正在编写一个 C++ 程序,通过 termios 向 Arduino 发送字符串来控制一些 LED。每行以换行符结束。我已经编写了一个可以输出到终端的测试程序,但是以下代码片段的输出存在问题:

char* ledAddr = (char*)malloc(3);
char* rVal = (char*)malloc(3);
char* gVal = (char*)malloc(3);
char* bVal = (char*)malloc(3);
...
fread(ledAddr, 3, 1, stdin);
fread(rVal, 3, 1, stdin);
fread(gVal, 3, 1, stdin);
fread(bVal, 3, 1, stdin);
...
char* outputString = malloc(17);

outputString[0] = 't';
strncpy(outputString+1, rVal, 3);
outputString[4] = ',';
strncpy(outputString+5, gVal, 3);
outputString[8] = ',';
strncpy(outputString+9, bVal, 3);
outputString[12] = ',';
strncpy(outputString+13, ledAddr, 3);
outputString[16] = '\n'

fwrite(outputString, 17, 1, stdout);

这是我的测试输入:

180
255
0
0

这是我的预期输出:

t255,0,0,180

这就是我的结局:

t
25,5
0,0,
184

如有任何帮助,我们将不胜感激。

最佳答案

在我看来是正确的。您可能想跳过换行符,但 fread() 不会为您这样做。如果您希望 FILE 操作读取行,您可以使用 fgets() 而不是 fread()

关于c++ - fwrite 输出字符串不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18859906/

相关文章:

c++ - 将图像位发送到嵌入在 FPGA 中的 HDL 生成的 RAM block

c - 如何解释数据类型大小及其对齐方式?

Linux复制文件并重命名为文件名的子字符串

c - 关于gcc中静态库的一些问题

c++ - 跨平台编程题(文件I/O)

c++ - std::bind 可变参数模板和自动返回类型

c++ - 无法编译Qt Creator

c++ - 使用 lambda 函数初始化静态数据成员

c - gcc 链接器错误 : version node not found for symbol

c - 核心实用程序中缺少 __vdso_time?