ede*_*ded 2 c substring concatenation strncpy
我写了一个简单的c程序,只取一个单词的前两个字符,取第二个单词的最后三个字符.我使用strncpy只将name1的前两个字母复制到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;
}
Run Code Online (Sandbox Code Playgroud)
我真的很感激,如果有人帮我弄明白为什么它会像这样,我怎么能纠正它?
strncpy 如果尺寸太小,则不添加nul-terminator.
试试这个:
strncpy(name, name1, 2);
name[2] = '\0';
Run Code Online (Sandbox Code Playgroud)