PDA

Visualizza la versione completa : [C] Spostamento cursore in un file


Downloader
12-03-2008, 16:43
Avrei un paio di domande:

1) esiste una funzione che mi sposta alla fine della riga?
2) esiste una funzione che mi permette di spostarmi tra le righe di un file di testo?
Ad esempio io apro un file in sola lettura e voglio accedere al contenuto della 10a riga?
Come faccio?


Grazie

MacApp
12-03-2008, 16:53
$ man lseek

Downloader
12-03-2008, 17:07
Grazie per la risposta, ma non riesco a trovare il suo prototipo in nessuna libreria del C.

Downloader
12-03-2008, 17:12
Potresti farmi un esempio di come andare da una riga n ad una m con questa funzione??
Non ho trovato spiegazioni che mi abbiano chiarito molto le idee.

Grazie

MacApp
12-03-2008, 17:23
scusa "lseek" è tipica dei sistemi Unix. Il metodo standard è usare la "fseek".
http://en.wikipedia.org/wiki/Fseek

Downloader
12-03-2008, 17:28
Si, conosco fseek, ma con questa funzione come posso ottenere i 2 risultati che vorrei avere??
Con fseek mi sposto da una posizione ad un'altra, ma non so quando sono arrivato alla fine della riga o quando sono arrivato all'inizio di una determinata riga.

Samuele_70
12-03-2008, 18:07
Le righe di testo hanno forse tutte la stessa lunghezza ?
O quanto meno hanno tutte una lunghezza massima ?

In ogni caso, se apri il file in modalità testo, puoi 'contare' ogni
ritorno a capo, cioè il carattere '\n', per intenderci.
Per farlo pui leggere il file un carattere alla volta dall'inizio (metodo
meno veloce, ma più semplice da usare).
Quando ne avrai contati 9 ti troverai esattamente all'inizio della 10a
riga di testo.

Altrimenti puoi usare la fgets() con un buffer di char molto grande
che leggerà, automaticamente, una riga alla volta.
Se la richiami 10 volte, il buffer conterrà la riga che ti serve.

Downloader
12-03-2008, 18:27
Si, sono delle buone idee, ma io cercavo proprio una funzione simile ad fseek.
Se ad esempio io sto alla riga 12 e voglio passare alle 10 come faccio??
La cosa inizia a diventare più complicata.

oregon
12-03-2008, 18:59
Le righe in un file non sono numerate ...

Se le righe hanno una lunghezza variabile, non hai tante scelte ... siamo in questa situazione?

MacApp
12-03-2008, 19:00
Da qualche parte devi sapere dove si trovano i "ritorni a capo". Se non lo sai, l'unico modo è cercarli nel file.

Loading