Si necesitas X numeros de nombres con eso te puede servir:
#include <stdio.h>
#include <stdlib.h>
#define MAXNOMBRES 5
#define MAXLETRAS 120
int main (){
int contador=0;
char nombre[MAXNOMBRES][MAXLETRAS] = {0};
while ( contador < MAXNOMBRES ){
scanf ( "%119[^\n]%*c", &nombre
[contador
][0] );
contador ++;
}
for ( contador = 0; contador < MAXNOMBRES; contador++ ){
printf("%s\n", &nombre
[contador
][0]); }
return 0;
}
Como ves ese "array de arrays" uso un contador, ese es el truco.
Si necesitas mas nombres pon un numero mayor en MAXNOMBRES.
Esta criatura: scanf ( "%119[^\n]%*c", &nombre[contador][0] ); lee maximo 119 letras, ignora el enter y pone el nulo al fin del string, un chollo. El problema es que si pasas de 119 caracteres, el resto se queda en el buffer. Para algo mas fiable debes limpiar el buffer después de cada lectura, pero si no pasas de 119 caracteres no hay problema.
Por otro lado si necesitas un programa para leer una cantidad de nombres indeterminados debes aprender a usar listas abiertas simples junto con memoria dinamica. Eso te permitiria leer "infinitos" nombres.
Suerte