Учу Си по книге Стивена Прата "С. Лекции и Упражнения. 5-е издание".
Так вот, выполняю упражнение для повторения.
Сама задача:
Напишите программу, которая использует вызов функции printf() для печати вашего имени и фамилии в одной строке, использует второй вызов функции printf(), чтобы напечатать ваше имя и фамилию в двух строках, и использует два вызова функции printf() для печати вашего имени и фамилии в одной строке. Выходные данные должны иметь следующий вид (при этом используются ваши персональные данные ): Иван Иванов
Переменные name и name2 у вас декларированы как char, а вы читаете строку - то есть выходите за границу аллоцированного под name/name2 пространства - наказание за это неотвратимо :)
Проблема в данный момент лежит глубже.
Откровенно скажу, не знаю, что и в какой последовательности написано в учебнике Стивена Прата, но Вам надо повнимательней почитать о машинном представлении переменных разных типов (обратите внимание на их размер в байтах), массивах, указателях и символьных строках в Си.
А затем стоит прочесть описания форматов в man 3 scanf и man 3 printf.
Обновление
Не нравится 30, сделайте 1000. А вот причем здесь тысячи имен?
Ведь новые имена будут попадать в те же переменные, затирая старые.
Если же Вам потребуется хранить их все, то в копии можно хранить ровно столько байт (ну, плюс еще немного для "служебной информации"), сколько занимает конкретное имя (сейчас пока не буду описывать как именно это можно делать).
А может Вам лучше что-то другое почитать? Например, http://ermak.cs.nstu.ru/cprog/HTML/index.htm
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости