Я попытался запустить этот простой код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
Может кто-нибудь сказать мне, что это такое?
Что сказал вам ваш отладчик? –
Когда вы объявите полный, оно может уже иметь значения в памяти. Поскольку вы не установили все значения равными нулю, strcat объединяет первое имя в конец. Вам нужно скопировать имя в полное имя. Я бы посмотрел strncpy или strcpy, поскольку это могут быть некоторые полезные функции (я бы пошел с strncpy, чтобы не повредить память с помощью перезаписи. – Glenn