Помещение %s
в список форматирования заставляет scanf()
читать символы, пока не будет найден пробел .Ваша входная строка содержит пробел, поэтому первый scanf()
читает только asdas
.Также scanf()
считается опасным (подумайте, что произойдет, если вы введете более 30 символов), поэтому, как указано другими, вы должны использовать fgets()
.
Вот как вы можете это сделать:
#include <stdio.h>
#include <string.h>
int main()
{
char fname[30];
char lname[30];
printf("Type first name:\n");
fgets(fname, 30, stdin);
/* we should trim newline if there is one */
if (fname[strlen(fname) - 1] == '\n') {
fname[strlen(fname) - 1] = '\0';
}
printf("Type last name:\n");
fgets(lname, 20, stdin);
/* again: we should trim newline if there is one */
if (lname[strlen(lname) - 1] == '\n') {
lname[strlen(lname) - 1] = '\0';
}
printf("Your name is: %s %s\n", fname, lname);
return 0;
}
Однако этот фрагмент кода еще не завершен.Вы все еще должны проверить, если fgets()
обнаружил некоторые ошибки.Подробнее о fgets()
здесь .