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);
}
}