我有以下代码:
uint16_t BufferSize = BUFFER_SIZE;
uint8_t Buffer[BUFFER_SIZE];
缓冲区大小为64个字节,并填充为:
Buffer[0] = 'P';
Buffer[1] = 'I';
Buffer[2] = 'N';
Buffer[3] = 'G';
Buffer[4] = 0;
Buffer[5] = 1;
Buffer[6] = 2;
Buffer[7] = 3;
Buffer[8] = 4;
.
.
.
Buffer[63] = 59;
我正在尝试使用以下命令打印缓冲区的内容:
for( i = 0; i < BufferSize; i++ )
{
PRINTF(Buffer[i]);
}
也尝试过:
for( i = 0; i < BufferSize; i++ )
{
PRINTF((const char*) Buffer[i]);
}
但是它不起作用。
答案 0 :(得分:1)
PRINTF
所有大写字母都不是标准的C函数; C区分大小写,因此您需要printf
。printf
,因为它可能会将其某些字符解释为其他参数的占位符(例如,字符串包含{{ 1}} ...)。通常,几乎所有情况下都可能会怀疑使用类似%
的函数但字符串文字之外的任何东西。因此,您需要printf
或printf("%s", (const char *)Buffer)
(通常效率更高)。 fputs((const char *)Buffer, stdout)
之后在NUL处停止。要实际输出整个缓冲区,必须使用未格式化的输出函数,例如PING
:fwrite
。 答案 1 :(得分:0)
您应参考printf
的语法。 C对小写和大写字母的处理方式不同,因此您应该编写如下内容:
printf("%c", Buffer[i])
答案 2 :(得分:0)
putchar
更好,更快。
int putchar(int character);
错误时返回EOF
,否则返回charater
本身。