С char проблема в том, что вам надо выделить под него память.
Можно, например, выделить массив с запасом - если вы знаете, что строк будет не более 100 размером не более 100 символов, то можно завести массив 100x100:
char names[100][100]
.
Читать туда можно хоть посимвольно, хоть через getline_s, хоть scanf (не забудьте только прописать в спецификаторе формата размер буфера, чтобы оно не переполнило массив).
Второй вариант - это руками реализовывать фактически vector. Вам надо выделить память под массив какой-то длины, допустим 10. Если же вы уже прочитали 10 символов и надо что-то еще читать, то вам надо память перевыделить через realloc размера, скажем, в 2 раза больше.
Также надо выделять и память под массив со строками char*. Если у вас 10 указателей, а файл еще не кончился и вы будете читать 11-ую строку, то перевыделите память на больше указателей.
Ну лучше всего, конечно, использовать std::string и std::vector.