我試圖運行這個簡單的代碼ç怪異的字符串輸出
#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
誰能告訴我這是什麼?
你的調試器告訴你什麼? –
當您聲明已滿時,它可能已經在內存中有值。由於您沒有將所有值設置爲零,因此strcat會將名字連接到結尾。您需要將第一個名稱複製到全名。我會查找strncpy或strcpy,因爲這可能是一些有用的功能(我會用strncpy來防止用覆蓋來破壞內存。 – Glenn