【发布时间】:2011-11-23 20:40:03
【问题描述】:
有谁知道 strncat 不能将 char 初始化为零的原因吗?代码如下
int main()
{
uint8 uibuffer[4] = {0};
uint8 txbuffer[10] = "ab";
uint8 rxbuffer[4] = "cde";
strncat((char*)txbuffer,(char*)uibuffer, 4);
strncat((char*)txbuffer,(char*)rxbuffer, 4);
for (int i = 0; i < sizeof(txbuffer); i += 1)
{
cout << (int(txbuffer[i]))<<" : "<< char(int(txbuffer[i]))<<endl;
}
return 0;
}
现在的输出是
97 : a
98 : b
99 : c
100 : d
101 : e
0 :
0 :
0 :
0 :
0 :
想要的输出是
97 : a
98 : b
0 :
0 :
0 :
0 :
99 : c
100 : d
101 : e
0 :
【问题讨论】:
-
strncat 在遇到
\0时停止复制,并且“ab”形式的字符串实际上在其末尾有一个。您需要一个自定义函数来实现这一点。 -
有什么原因你不能用 std::string 做到这一点?
-
背后的原因是因为我连接了char数组和需要转换为char数组的整数
标签: c++ concatenation