Duda sobre ficheros

Iniciado por asdavid, 6 Diciembre 2012, 14:53 PM

0 Miembros y 1 Visitante están viendo este tema.

asdavid

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

leosansan

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 (cpp) [Seleccionar]
/* Lectura hasta el final de un fichero de texto */
#include <stdio.h>
main()
{
    FILE* fichero;
    char frase[81];
    fichero = fopen("cantidad.txt", "wt");
    fputs("1\n", fichero);
    fputs("5\n", fichero);
    fputs("10", fichero);
    fclose(fichero);
    fichero = fopen("cantidad.txt", "rt");
    if (fichero == NULL){
        printf("No existe el fichero!\n");
        return 1;
        }
    while (! feof(fichero)) {
        fgets(frase, 80, fichero);
        puts(frase);
    }
    fclose(fichero);
}

Saluditos!.

rir3760

Cita de: asdavid en  6 Diciembre 2012, 14:53 PMcomo 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|.

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í:
#define NUM_CHARS     256
#define NOM_ARCHIVO  "Fichero.txt"

/* ... */

FILE *entrada;
char linea[NUM_CHARS];
int i;

/* ... */

i = 0;
while (fgets(linea, NUM_CHARS, entrada) != NULL){
   printf("Linea %d: %s\n", ++i, linea);
   /* etc */
}
if (ferror(entrada)){
   /* Manejo de error */
   perror(NOM_ARCHIVO);
   /* etc */
}


Cita de: leosansan en  6 Diciembre 2012, 15:35 PMUn 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
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

leosansan

Cita de: rir3760 en  6 Diciembre 2012, 15:39 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!.