И я не могу использовать строки или библиотеки.
Обычно это означает: инструктор запрещает их использование. Это нормально. Но я просто хочу уточнить, что из-за этого ответ будет указывать на неоптимальное решение.
Итак, у вас есть несколько вариантов:
Вариант 1: Использовать массив.
struct elem{
char name2[256];
Затем вам нужно ввести имя в name2. И будьте осторожны, чтобы не переполниться.
Вариант 2. Использование динамической памяти c.
l = strlen(name);
name2 = new char[l + 1];
//strcpy
//and deal with delete[] later on.
Вариант 3. В любом случае используйте std :: string и попытайтесь обучить инструктора. YMMV.