我有一个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数组可以得到预期的“ hello”,因此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;
}
答案 0 :(得分:0)
您在字符串末尾缺少换行符或fflush(stdout)。
printf()将缓冲传递的字符串,直到遇到换行符为止。如果要查看打印内容,则必须添加
fflush(stdout);
在程序末尾。