sprintf合并char数组

时间:2018-10-18 11:46:06

标签: c arrays printf

我有一个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;
}

1 个答案:

答案 0 :(得分:0)

您在字符串末尾缺少换行符或fflush(stdout)。

printf()将缓冲传递的字符串,直到遇到换行符为止。如果要查看打印内容,则必须添加

fflush(stdout); 

在程序末尾。