gpt4 book ai didi

c - strncpy 追加 1 个额外的(奇怪的或随机的)字符

转载 作者:行者123 更新时间:2023-12-02 22:10:03 25 4
gpt4 key购买 nike

我写了一个简单的 c 程序,只取一个单词的前两个字符和第二个单词的最后三个字符。我使用 strncpy 仅将 name1 的前 2 个字母复制到 name,并与 name2 的最后三个字符连接。

但是,当我运行它时。输出会有点像

Ediacy //correct

acy //wrong

Ed?
acy //wrong

Edk
acy //wrong

Edv
acy //wrong

// code sample
#include <stdio.h>
#include <string.h>

int main(void)
{
char name[100];

char name1[] = "Edison";
char *name2 = "Tracy";

strncpy(name, name1, 2); // instead of get Ed, it tried to append one extra char behind it.
strcat(name, name2+2);

printf("%s\n", name);

return 0;
}

如果有人能帮我弄清楚为什么会这样以及我该如何纠正它,我将非常感激?

最佳答案

如果大小太小,

strncpy 不会添加空终止符。

试试这个:

strncpy(name, name1, 2);
name[2] = '\0';

关于c - strncpy 追加 1 个额外的(奇怪的或随机的)字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15458333/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com