Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: asdavid en 6 Diciembre 2012, 14:53 pm



Título: Duda sobre ficheros
Publicado por: asdavid en 6 Diciembre 2012, 14:53 pm
buenas!!
como leo el salto de linea en un fichero??
ejemplo del fichero:
{
  Primera linea del fichero
  Segunda linea del fichero}
se como puedo leer la primera cadena de caracteres(primera linea),pero no se como leer la segunda, (después del salto de linea dentro del fichero).Alguien sabe??
Un saludo!
Codigo:
#include<conio.h>
#include<stdio.h>
main()
{
   File *nombre;
   char frase[30];
   nombre=fopen("Fichero.txt","r");
   fgets(frase,30,nombre)
}


Título: Re: Duda sobre ficheros
Publicado por: leosansan en 6 Diciembre 2012, 15:35 pm
Un ejemplo es el código que te paso. Puedes cambiarlo con un índice, para que sólo te lea un número determinado de líneas o ciertas líneas, como las pares o impares, etc:
Código
  1. /* Lectura hasta el final de un fichero de texto */
  2. #include <stdio.h>
  3. main()
  4. {
  5.    FILE* fichero;
  6.    char frase[81];
  7.    fichero = fopen("cantidad.txt", "wt");
  8.    fputs("1\n", fichero);
  9.    fputs("5\n", fichero);
  10.    fputs("10", fichero);
  11.    fclose(fichero);
  12.    fichero = fopen("cantidad.txt", "rt");
  13.    if (fichero == NULL){
  14.        printf("No existe el fichero!\n");
  15.        return 1;
  16.        }
  17.    while (! feof(fichero)) {
  18.        fgets(frase, 80, fichero);
  19.        puts(frase);
  20.    }
  21.    fclose(fichero);
  22. }
Saluditos!.


Título: Re: Duda sobre ficheros
Publicado por: rir3760 en 6 Diciembre 2012, 15:39 pm
como leo el salto de linea en un fichero??
El nombre del tipo esta mal, debería ser "FILE". También hay que cambiar la definición de la función main y evitar el uso de la biblioteca conio de Borland. Mas información en el tema |Lo que no hay que hacer en C/C++. Nivel basico| (http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html).

Para leer todas las lineas de un archivo utilizas la función fgets en un bucle, este termina cuando ella retorne NULL (eso sucede en caso de error o fin de archivo). Mas o menos así:
Código
  1. #define NUM_CHARS     256
  2. #define NOM_ARCHIVO  "Fichero.txt"
  3.  
  4. /* ... */
  5.  
  6. FILE *entrada;
  7. char linea[NUM_CHARS];
  8. int i;
  9.  
  10. /* ... */
  11.  
  12. i = 0;
  13. while (fgets(linea, NUM_CHARS, entrada) != NULL){
  14.   printf("Linea %d: %s\n", ++i, linea);
  15.   /* etc */
  16. }
  17. if (ferror(entrada)){
  18.   /* Manejo de error */
  19.   perror(NOM_ARCHIVO);
  20.   /* etc */
  21. }

Un ejemplo es el código que te paso.
Se debe evitar el uso de la funcion feof para controlar la lectura de un archivo, te comente las razones de ello en otro tema.

Un saludo


Título: Re: Duda sobre ficheros
Publicado por: leosansan en 6 Diciembre 2012, 15:57 pm
Se debe evitar el uso de la funcion feof para controlar la lectura de un archivo, te comente las razones de ello en otro tema.
Me pillo antes de leer el otro tema, donde ya corregí lo que indicabas,  pero con la duda-repito la pregunta del otro tema-que  al usar while (fgets(frase, 81, fichero) != NULL) en lugar de while (! feof(fichero)) no me sale la primera línea.
Gracias otra vez.
Saluditos!.