Pagina 1 di 1

posizionarsi su una riga con fseek in C?

MessaggioInviato: gio ott 30, 2008 10:00 pm
da serialina80
Buonasera a tutti :)
premesso che sono alle prime armi con la programmazione....spero che non sia una domanda stupida
come si fa a posizionarsi su una certa riga di un file di testo?Faccio un esempio: il file .txt ha 5 righe,come posso posizionarmi sulla terza riga?
Devo usare fseek,se si come?mi affido a voi

Re: posizionarsi su una riga con fseek in C?

MessaggioInviato: ven ott 31, 2008 6:49 pm
da serialina80
Ok.....fa niente....ho risolto..... [^]

Re: posizionarsi su una riga con fseek in C?

MessaggioInviato: ven ott 31, 2008 9:05 pm
da dararag
posta come

Re: posizionarsi su una riga con fseek in C?

MessaggioInviato: sab nov 01, 2008 11:24 am
da serialina80
[acc2] ops scusa......questo è il codice di esempio:
Codice: Seleziona tutto
/*il programma deve aprire un file di testo contenente un certo numero di righe e per ogni riga 3 numeri.Si posiziona alla riga n(scelta dall'utente)
e fa la somma dei numeri di quella riga.Esempio file:
Numeri.txt
3 67 22
11 2 40
22 7 9

//include librerie
FILE *fd;
char buff[size_buff];
int iriga=0;
int nriga;//valore scelto dall'utente

int main(int argc, char **argv){
     //faccio inserire dall'utente il numero di riga di cui voglio la somma con i rispettivi controlli...nriga=2
      .........
      ........
      fd=fopen("Numeri.txt","r") //apro il file in lettura....Ho omesso il controllo degli errori sulla funzione per semplificare
      while((fgets(buff,size_buff,fd))!=NULL){//fgets mi estrae da fd una riga, il ciclo while mi permette di scorrere tutte le righe
                iriga++;//contatore di riga
                if(iriga==nriga){// quando il contatore iriga è uguale al valore scelto dall'utente
                          //estraggo ogni elemento dell'n-esima  riga con strtok()
                         //effettuo la somma......ricorda!! con atoi converti la porzione di stringa puntata in intero

                }
       }
        fclose(fd);


}


Dunque..... per posizionarsi alla riga n ho usato fgets con il while(e non fseek),perché fgets legge stringhe fino a che non trova il carattere'\0' che indica il carattere di fine riga.
Conclusione: non c'era bisogno di essere dei geni,bastava passare ore ed ore sul manuale del C.....è li il problema [B)]