为什么我在 C 中输出的字符串不正确?
Why is my output of strings in C not correct?
我正在尝试在我的程序中使用 uart_poll_out
而不是 printk
,在使用 printk
之前,我能够获得我想要的正确输出到我的 uart 控制台。这是代码和正确的输出:
for (int i = 0; i < sizeof cmd_handles / sizeof cmd_handles[0]; i++)
{
printk("%s\t%s\n", cmd_handles[i].cmd, cmd_handles[i].help);
}
help Show commands and descriptions
sample sample function
现在我必须使用 uart_poll_out
并且我的输出一团糟。我不知道如何修复 it/what 是错误的。这是我的代码和(不正确的)输出。我希望输出看起来与上面相同。
for (int i = 0; i < sizeof cmd_handles / sizeof cmd_handles[0]; i++)
{
u8_t tempbuff[1];
u8_t buf[sizeof(cmd_handles[i].cmd) + sizeof(cmd_handles[i].help) + 5]; // the 5 is arbitrary
sprintf(buf, "%s\t%s\n", cmd_handles[i].cmd, cmd_handles[i].help);
for (int i = 0; i < sizeof(buf); i++)
{
uart_poll_out(comm_uart, buf[i]);
}
}
help Show comsample sample
这是cmd_handles
:
const cli_cmd_handle_t cmd_handles[] =
{
{.cmd = "help", .help = "Show commands and descriptions", .handler = cli_help_handler},
{.cmd = "sample", .help = "sample function", .handler = sample_function},
};
有谁知道如何解决这个问题?谢谢:)
编辑:cli_cmd_handle_t
的定义:
{
const char *cmd;
const char *help;
CliCmdHandler handler;
} cli_cmd_handle_t;```
感谢@WeatherVane 的帮助。我不得不使用 strlen()
而不是 sizeof()
来获得正确的输出。
我正在尝试在我的程序中使用 uart_poll_out
而不是 printk
,在使用 printk
之前,我能够获得我想要的正确输出到我的 uart 控制台。这是代码和正确的输出:
for (int i = 0; i < sizeof cmd_handles / sizeof cmd_handles[0]; i++)
{
printk("%s\t%s\n", cmd_handles[i].cmd, cmd_handles[i].help);
}
help Show commands and descriptions
sample sample function
现在我必须使用 uart_poll_out
并且我的输出一团糟。我不知道如何修复 it/what 是错误的。这是我的代码和(不正确的)输出。我希望输出看起来与上面相同。
for (int i = 0; i < sizeof cmd_handles / sizeof cmd_handles[0]; i++)
{
u8_t tempbuff[1];
u8_t buf[sizeof(cmd_handles[i].cmd) + sizeof(cmd_handles[i].help) + 5]; // the 5 is arbitrary
sprintf(buf, "%s\t%s\n", cmd_handles[i].cmd, cmd_handles[i].help);
for (int i = 0; i < sizeof(buf); i++)
{
uart_poll_out(comm_uart, buf[i]);
}
}
help Show comsample sample
这是cmd_handles
:
const cli_cmd_handle_t cmd_handles[] =
{
{.cmd = "help", .help = "Show commands and descriptions", .handler = cli_help_handler},
{.cmd = "sample", .help = "sample function", .handler = sample_function},
};
有谁知道如何解决这个问题?谢谢:)
编辑:cli_cmd_handle_t
的定义:
{
const char *cmd;
const char *help;
CliCmdHandler handler;
} cli_cmd_handle_t;```
感谢@WeatherVane 的帮助。我不得不使用 strlen()
而不是 sizeof()
来获得正确的输出。