1つの単語の最初の2文字だけを取り、2番目の単語の最後の3文字を受け取る単純なcプログラムを作成しました。strncpyを使用して、name1の最初の2文字のみをnameにコピーし、name2の最後の3文字と連結します。
しかし、私がそれを実行すると。出力はどういうわけか好きになります
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;
}
なぜそれがこのように動作するのか、そしてどのように修正できるのかを誰かが理解するのを手伝ってくれたら本当にありがたいです。