C strncpy 2 字符

标签 c string malloc strncpy

当我想从字符串中复制 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/

相关文章:

c - POSIX 进程和文件描述符

string - 如何从Elixir中的字符串中删除前n个字符?

c 段错误,读取大文件

c - 为什么用 malloc 初始化的指针是空指针?

c - 正确处理 Lua 绑定(bind) C 代码中的 malloc 调用

更改宏部分,让两个输出具有相同的值

c - 允许在 Swift 中使用 C 函数的桥接 header 失败

c - C 中带有指向其他结构数组指针的结构的问题

java - 比较忽略重音字符的字符串

C++ 将 2 个字符串合并在一起