Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   mostrar fichero linea a linea (https://www.clubdelphi.com/foros/showthread.php?t=29699)

torete_86 30-01-2006 17:14:25

mostrar fichero linea a linea
 
buenas.

necesitaria saber como mostrar un fichero linea a linea.

tengo un fichero .txt en el que hay un texto escrito en varias lineas. La cuestion esque no se muy bien como mostrarlo por pantalla linea a linea.

si no tengo mal entendido es con la funcion gets.

he conseguido que fuera pero no me interesa la forma que lo he logrado. De la manera que funciona es esta:

Código:

void mostrar_fichero()
{
    char texto;
    FILE *f;

    f=fopen("datos.txt", "r");
    texto=getc(f);
    while (texto != EOF)
    {
        printf ("%c", texto);
        texto=getc(f);
    }
    fclose(f);
}

muchas gracias x adelantado

dec 30-01-2006 17:22:48

Hola,

No sé si será la forma más eficiente, pero, es muy práctico hacer uso de la clase "TStrings" para lo que pretendes. La misma cuenta con métodos "LoadFromFile", "SaveToFile", etc. Alberga el contenido del archivo y permite acceder a las líneas del mismo de una forma sencilla. Échale un vistazo a la ayuda de C++ Builder sobre la clase "TStrings" a ver qué te parece.

torete_86 30-01-2006 17:36:57

Buenas dec.

muchas gracias por la ayuda. He encontrado una manera de hacerlo que aunque no parece muy fiable funciona.

os la dejo por si alguien le sirve.

Código:

void introduir_fitxer_linia()
{
    FILE *f;
    text linia;

    f=fopen("datos_linia.txt","w");
    printf("\n");
    printf("introdueix el text");
    printf("\n");
    (void)flushall();
    do
    {
        gets(linia);
        fputs(linia, f);
        fputs("\n" ,f);
    }while(strlen(linia)!=0);
    fclose(f);
}

gracias y saludos

OSKR 30-01-2006 18:14:50

No te creo eso de q te funciona o no decias la verdad en la primera ocasion.....ahi lo q estas haciendo es escribir en un fichero en vez de leerlo, de paso, si este existe antes ce llamar el fopen, este sera vaciado por el "w" q tienes en el modo de apertura
Código:

void mostrar_fichero()
{ char texto;
  FILE *f=fopen("datos.txt", "r");
  if(!f)
    { perror("no se pudo abrir datos.txt");
      return;
    }
  texto=fgetc(f);
  while(texto != EOF)
    { fputc(texto,stdout);
      texto=fgetc(f);
    }
    fclose(f);
}


torete_86 30-01-2006 20:14:39

jajajaja perdon tio... me equivoque al pegarlo.

esque tenia las dos acciones echas y puse la que no era.

disculpar mi error.

gracias por la correccion


La franja horaria es GMT +2. Ahora son las 16:23:20.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi