当我想从字符串中复制 2 个字符时,我无法制作 strncpy
,但当我想复制 3 个字符时,相同的代码可以工作。
在此示例中,我需要 strncpy()
将 12 存储在“to”变量中:
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] = '\0';
关于C strncpy 2 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44846523/