Потому что scanf("%s", name) сканирует поле до первого пробельного символа.
Если ты хочешь строчку до конца строки используй, например, scanf("%[^\n]", name)
jcmvbkbc, вопрос такой: есть определение массива char name[1024]; Что будет, если вводимая строчка будет больше 1024 символа. Я поменял размер массива на 3 элемента и ввел больше. Всё равно напечаталась вся строчка. Как так, подскажите)
Алексей Лашко, ты вылез за пределы массива и перетёр то что там было, вот так. В этой функции нет никаких данных после массива name, сам массив лежит на стеке, ты можешь зачитать в него дофига данных и напечатать их и всё будет работать. До тех пор, пока дело не дойдёт до return 0;. В этом месте тебя ожидает сюрприз, потому что достаточно длинная строка перепишет адрес возврата и ты вернёшься неизвестно куда, где, скорее всего, получишь сегфолт и программа завершится.
scanf достаточно мощная функция чтобы предотвратить это, в строке формата можно указать максимальную ширину поля и scanf не станет читать больше данных чем там указано. Например так: scanf("%1023[^\n]", name);
Кроме того, если исходную программу ты соберёшь с каким-нибудь -fsanitize=address она сломается в месте вызова scanf если ты дашь ей больше 1023 символов на вход.