【问题标题】:C - print in Stream array byte with variable sizeC - 以可变大小打印流数组字节
【发布时间】: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 的推荐,我也会将其添加到我的代码中。

标签: c printf bytearray


【解决方案1】:

您可以使用fwrite 将具有给定长度的任意数据写入文件(或设备文件),而不仅仅是字符串。

【讨论】:

  • 我在互联网上寻找你推荐的功能,这正是我想要的:cplusplus.com/reference/cstdio/fwrite 问题是我正在编写一个 PIC,由于某种原因,fwrite() 没有出现在我的 CCS 的 中。不过还是谢谢你,尤金
猜你喜欢
  • 1970-01-01
  • 2015-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-01
  • 1970-01-01
相关资源
最近更新 更多