// cadenas.cpp - Operaciones con cadenas
#include <iostream>
#include <limits>
using namespace std;

int main()
{
  const int LONG_CAD = 80;
  const int NUM_CADS = 10;
  char nombres[NUM_CADS][LONG_CAD];
  int i = 0;
  cout << "Introducir nombres. Finalizar cada línea con Entrar.\n"
       << "Eof + Entrar para finalizar.\n\n";
  do
  {
    cout << "nombre[" << i << "] = "; // visualiza: nombre[i] =
    cin.getline( nombres[i], LONG_CAD, '\n' );
    // Si el nombre excede de la longitud máxima (LONG_CAD-1),
    // se ignoran el resto de los caracteres
    if ( strlen(nombres[i]) == LONG_CAD-1 )
    {
      cin.clear(); // reset failbit
      cin.ignore(numeric_limits<int>::max(), '\n');
    }
    i++;
  }
  while( !cin.eof() && !cin.bad() && i < NUM_CADS );

  if ( cin.bad() )
  {
    cerr << "Error irrecuperable" << endl;
    return 1;
  }

  if ( cin.eof() )
  {
    cin.clear();  // desactivar los indicadores de error
    i--;          // decrementar el índice de la matriz
  }
  
  // Escribir los datos leídos
  for (int k = 0; k < i; k++)
    cout << nombres[k] << endl;
}

