如何在不擦除其余字符串的情况下在另一个字符串中添加字符串

时间:2017-03-30 22:45:49

标签: string arduino

我在尝试在另一个特定位置添加字符串时遇到了不好的时间。每次我使用这段代码时,字符串的其余部分都会变成空白。

double temperature = 22.1;
unsigned char pacote[16] = "#0123456789ABCDEF";
unsigned char temp_local[3];
dtostrf(temperatura, 3, 1, temp_local);
sprintf(pacote+3,"%s", temp_local);

sprintf(pacote+3,temp_local);

得到了相同的printf:

#0122.1

取而代之的是:

#0122.16789ABCDEF

为什么它会删除所有其余的字符串,而不仅仅是在[3]之后替换接下来的4个位置而剩下的只剩下其余的4个位置。 我使用的是arduino,但我认为这是一般的C问题。

非常感谢!!!

2 个答案:

答案 0 :(得分:0)

您应该将字符串数据移动到指定位置(而不是复制包含终止'\0'的字符串):

memcpy(pacote+3, temp_local, strlen(temp_local));

答案 1 :(得分:0)

如果您使用的是C ++,那么请在

中使用string :: substr

new_string = old_string.substr(0,3)+“some text”+ old_string.substr(3);

在纯C中,首先需要确保目标有足够的空间。 sprintf返回写入的字符数。使用此选项可确保目标有足够的空间。然后根据需要将两个子字符串与新字符串连接起来。