【发布时间】:2015-02-10 08:01:11
【问题描述】:
我正在设计一个系统,我从 SD 卡中读取并通过蓝牙发送信息。
为此,首先我准备好来自 SD 卡的数据并将字节存储在一个固定长度的数组字节中:
char final_name[17];
为了通过蓝牙发送,我将蓝牙定义为流,并调用 printf 发送数据:
fprintf(BLUETOOTH, final_name);
问题在这里:
此函数设计用于:
int fprintf(FILE *stream, const char *format, …);
所以这很完美,只发送了 8 个字节:
fprintf(BLUETOOTH, "name.txt");
但我需要发送一个可变大小的字节数组。我一直在寻找与 fprintf 类似的功能,但是您可以在其中指定要打印的字节长度,但我找不到。
有没有人知道类似的格式:
int fprintf(FILE *stream, char *format, int lenght);
【问题讨论】:
-
我会使用 sprintf() 将输出格式化为字符串,然后将简单的格式化字符串发送到您的蓝牙发送例程。
-
fprintf允许发送任意长度的字符串,假设它是一个有效的以空字符结尾的字符串。看起来你在某个地方感到困惑。您能否提供更多有关要求的详细信息? -
您确定您的 finalname 以 null 结尾并且不包含其他零吗?
-
顺便说一句,您可能不应该将您的 char 数组直接用作“fmt”说明符,而应使用“fprintf(BLUE_TOOTH,"%s",final_name)”。它应该减少编译器警告,并且不易出错。
-
感谢 Eugene Sh。我在数组字节最后添加了一个 0x00,正如你所说,传输被切断了。非常感谢您。感谢 shooper 的推荐,我也会将其添加到我的代码中。