た私は、この単純なコードC奇妙な文字列出力
#include <stdio.h>
#include <string.h>
int main() {
char first[20];
char last[20];
char full[40];
printf("Your first name?: ");
fgets(first, sizeof(first), stdin);
printf("your last name?: ");
fgets(last, sizeof(last), stdin);
first[strlen(first) - 1] = '\0';
strcat(full, first);
strcat(full, " ");
strcat(full, last);
printf("Your full name is: %s", full);
}
を実行しようとした出力が返される。..
Your first name?: Daniel
your last name?: Jee
Your full name is: pA▒Daniel Jee
誰もこれが何であるかを教えてもらえますか?
デバッガはあなたに何を伝えましたか? –
完全であると宣言すると、すでにメモリに値がある可能性があります。すべての値を0に設定しなかったので、strcatは最初の名前を最後に連結します。最初の名前をフルネームにコピーする必要があります。 strncpyまたはstrcpyを参照すると便利な機能がいくつかあります(strncpyを使って上書きしてメモリを破壊することはありません)。 – Glenn