C で strncpy をいじっていて、問題が発生しています。
コードは次のとおりです。
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
char src[] = "Benjamin Franklin";
char dest[5];
strncpy(src, dest, sizeof(dest) / sizeof(char));
dest[5] = '\0';
printf("%s\n", dest);
return 0;
}
以下を使用してエラーなしでコンパイルします。
gcc -Wall -g -Werror test.c -o test
そして意味不明のように出力します
p4��
特に私はそれをたくさんいじってオンラインで答えを探していたので、自分が間違っていることを本当に理解できません。おそらく、配列を使用しているため、気づかずにアドレスをprintfに渡していますか?