将字符串的一部分分配给char数组
Assign part of a string to a char array
编辑:在问了这个问题之后,我被告知如何在没有null终止符的情况下初始化char数组?这几乎是相同的。(我也在构建一个网络数据包。(
无论如何,我都会保留这个问题,因为我只是分配而不是初始化。
我有一个固定大小的数组,我想将固定文本分配给:
char text[16];
text = "0123456789abcdef";
当然,这不起作用,因为右手边包含null终止符。
error: incompatible types in assignment of 'const char [17]' to 'char [16]'
文本是可读的,所以我更喜欢把它放在一块,即不写{'0', '1', ...}
。
我能以某种方式完成任务吗?
顺便说一句,我只有几百字节的RAM,所以最好(但其次是人类可读性要求(解决方案不应该使用两倍的RAM来进行临时复制或类似的操作。
如果用C:编写
char text[16];
strncpy(text, "0123456789abcdef", sizeof(text));
注意,text
将不具有null终止符,并且与strlen
等标准C函数不兼容。如果文本是可读的,我建议包括终止符。这只是一个角色,但它会让你的生活变得更轻松。
示例:
char text[17];
strncpy(text, "0123456789abcdef", sizeof(text));
首先,如果您有任何误解,"0123456789abcdef"
是一个字符串文字。它的类型是const char [17]
,而不是const char [16]
,因为此字符串文字的末尾有一个空终止符