char **ingresar_texto(int *cantidadlineas)
{
 
  char **buffer;
  char *linea;
  int a, i = 1;
 
  
  while ((a = getlin(linea)) != 0)
  {
    if (a == -1)
    {
      fprintf(stderr, "la linea ingresada es demasiado grande. No sera tomada en cuenta\nContinue ingresando el texto:\n");
      
    }
    else
    {
            buffer = (char **)realloc(buffer, i * sizeof(char *)); /*aloca otra linea*/
            buffer[i-1]= (char *)malloc(strlen(linea)); /*aloca lugar para la linea en el texto*/
      strcpy(buffer[i-1], linea); /*copia la linea al texto*/
      i++;
      free(linea);
    }
  }
  buffer = (char **)realloc(buffer, sizeof(char *) * i ); 
    buffer[i-1] = NULL;  
    *cantidadlineas = i - 1;
 
 
  return buffer;
}
 
 
int getlin(char *linea) /*lee una linea desde teclado*/
{
 
  char ch;
  int i = 0;
  int bufsize = MAX_CHAR;
  linea = (char *)malloc(sizeof(char) * (bufsize + 1));
 
  while (((ch = getchar()) != '\n') && (ch != FINTEXTO) && (i < MAX_CHAR))
  {
        linea[i] = ch;
    i++;
  }
  if (ch == '\n')
  {
    linea[i] = ch;
    linea[i+1] = '\0';
    return i;
  }
  else if (ch == FINTEXTO) /*caracter de salida*/
  {
    if (i > 0)
    {
    fprintf(stderr, "escriba el caracter de salida en una linea nueva");
    linea[i] = '\n';
    linea[i+1] = '\0';
    return i;
    }
    else {
    return 0;
    }
  }
  else if (i >= MAX_CHAR)
  {
         return -1;
         }
  else
  {
    fprintf(stderr, "ERROR!");
    exit(0);
  }
}