Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [C] leggere le n-esima riga

    Ragazzi,
    ho un problema.
    Con la funzione fgets riesco a leggere la prima riga di un file.
    Se quel file è formato da tante righe e io ne voglio leggere una in particolare (della quale conosco la posizione) come devo fare (in C)?
    Bye
    Conquista la folla, e conquisterai la libertà (Proximus - Il gladiatore)
    Il riferimento italiano per i Fans di Final Fantasy
    Scandalos member of APE

  2. #2
    Utente di HTML.it L'avatar di Yojimbo
    Registrato dal
    Nov 2003
    Messaggi
    104
    in che senso conosci la posizione ? se conosci l'offset dall'inizio del file basta usare
    fseek( SEEK_SET, offset); se l'offset è dall'inizio del file
    fseek( SEEK_CUR,offset); se l'offset è dalla posizione corrente

    questo muove la posizione del file al punto che ti serve

  3. #3
    Intendo:

    file.txt
    5
    blablalbalb
    sdmkfspmf
    csavdava
    Come faccio a prendere (per esempio) la riga 3 metterla in una variabile?
    Con fgets riesco a mettere la prima riga in una var, ma le altre?
    Bye
    Conquista la folla, e conquisterai la libertà (Proximus - Il gladiatore)
    Il riferimento italiano per i Fans di Final Fantasy
    Scandalos member of APE

  4. #4
    Utente di HTML.it L'avatar di Yojimbo
    Registrato dal
    Nov 2003
    Messaggi
    104
    son cazzi,se nn sai quanto è lunga ogni stringa...devi farti un bel ciclo che scorre il file leggendo i dati in un buffer e verificando quanti ritorni a capo ti trovi sai in che riga ti trovi e se devi tenerla in memoria, o se vuoi fare una cosa + semplice basta che usi fgets n volte

  5. #5
    Originariamente inviato da Yojimbo
    son cazzi,se nn sai quanto è lunga ogni stringa...devi farti un bel ciclo che scorre il file leggendo i dati in un buffer e verificando quanti ritorni a capo ti trovi sai in che riga ti trovi e se devi tenerla in memoria, o se vuoi fare una cosa + semplice basta che usi fgets n volte
    Come faccio a sfruttare fgets più volte se prende sempre la prima linea?
    Bye
    Conquista la folla, e conquisterai la libertà (Proximus - Il gladiatore)
    Il riferimento italiano per i Fans di Final Fantasy
    Scandalos member of APE

  6. #6
    Utente di HTML.it L'avatar di Yojimbo
    Registrato dal
    Nov 2003
    Messaggi
    104
    fgets nn legger sempre la prima linea...

  7. #7
    fgets legge fino a quando incontra la prima interruzione di riga, no?
    Conquista la folla, e conquisterai la libertà (Proximus - Il gladiatore)
    Il riferimento italiano per i Fans di Final Fantasy
    Scandalos member of APE

  8. #8
    usa fscaf. nel tuo caso verrebbe
    codice:
    /*
    Nota che i campi della struct sono == a quelli del file
    */
    typedef struct _Info
    {
     int n;
     char primo[90];
     char secondo[90];
    }Info;
     /* main */
       Info tua_struct; 
       memset(&tua_struct, 0, sizeof(Info));
       FILE * f = fopen("es.txt", "r"); 
       fscanf
       (f, 
       "%d %s %s %s",
       &tua_struct.n,
       &tua_struct.primo, 
       &tua_struct.secondo,
       );
       fclose(f);
    La stupidità umana e l'universo sono infinite.
    Della seconda non sono certo(Einstein)

    Gnu/Linux User

  9. #9
    Infatti fscanf legge righe e vai sul sicuro.
    .:: Zetra.it - Web. ads . multimedia . graphix ::.
    Realizzazione siti web - Carte Magic ai prezzi più bassi d'italia
    - Comuni e Città

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.