当我想从字符串中复制 2 个字符时,我无法strncpy
,但是当我想复制 3 个字符时,相同的代码正在工作。
在这个例子中,我需要strncpy()
在"to"变量中存储 12:
void main(){
const char* from = "12345678";
char *to = (char*) malloc(3);
strncpy(to, from, 2);
printf("%s", to);
free(to);
}
但是当我将strncpy(to, from, 3)
与malloc(4)
一起使用时,它可以正常工作。有什么解决方案可以做到这一点吗?
您忘记在目标字符串后附加一个终止零。
char *to = (char*) malloc(3);
strncpy(to, from, 2);
to[2] = ' ';