【发布时间】:2018-10-18 11:46:05
【问题描述】:
我有一个 char 数组和一些变量,我想使用 sprintf 来组合它们。
变量定义如下:
uint8_t var1;
char name1[20];
char textout1[40];
在程序的不同点我使用 strcpy 来填充 name1。
strcpy(name1, "hello");
var1 也获得了赋值
var1 = 5;
然后我想使用 sprintf 将它们组合成一个 char 数组。
sprintf(textout1, "%s %u", name1, var1);
如果我现在打印 textout1,我会得到
5
缺少字符串/字符数组。谁能弄清楚这是为什么? 分别打印 name1 数组给了我预期的“你好”,所以 strlcpy 工作正常。
一个最小的代码示例:
#include <stdio.h>
#include <stdint.h>
uint8_t var1;
char name1[20];
char textout1[40];
int main() {
strcpy(name1, "hello");
var1 = 5;
sprintf(textout1, "%s %u", name1, var1);
printf(textout1);
printf(name1);
return 0;
}
【问题讨论】:
-
strcpynull-自动终止。strlcpy又是什么意思? -
无法复制。看this。我用
strcpy替换了非标准的strlcpy,它不应该改变任何东西。问题可能出在您未显示的代码中。 -
@C.Winters 添加
#include <string.h>并重试。编译时启用警告。 -
@JorgeBellón 不要使用
strncpy,它不是你想的那样。 -
@C.Winters 您发布的代码在一行上打印出
hello 5hello,这正是人们对该代码的期望。你期待别的吗?你真的有这个最小示例没有显示的不同问题吗?