PDA

Visualizza la versione completa : [C] Funzione fscanf()


SergiusXP
29-12-2008, 17:02
Ciao!

Leggendo un listato mi sono imbattuto in questo codice:



for(i=0; i<num; i++)
{
fscanf(fp, "%d", &punti[i * 2]);
fscanf(fp, "%d", &punti[i * 2 + 1]);
}


E nel file punti.txt contenente:

4
5 2
1 -4
8 12
-3 -7

e mi chiedevo: che cosa significa il codice che vi ho scritto sopra??

Cosa vogliono dire le istruzioni


fscanf(fp, "%d", &punti[i * 2]);
fscanf(fp, "%d", &punti[i * 2 + 1]);

???

Aiuto dilemma urgente š_˛

Sergio

Stoicenko
29-12-2008, 17:07
http://www.cplusplus.com/reference/clibrary/cstdio/fscanf.html

qui trivi info sulla fscanf..

Ricorda che google Ŕ tuo amico

lmweb.it
29-12-2008, 18:07
Guarda ho da poco iniziato a programmare in c ma quell codice che hai scritto tu, secondo me, non fa altro che caricare in un vettore il primo scanf li carica nelle posizioni pari del vettore ed il secondo nelle posizioni dispari

SergiusXP
30-12-2008, 13:33
Originariamente inviato da lmweb.it
Guarda ho da poco iniziato a programmare in c ma quell codice che hai scritto tu, secondo me, non fa altro che caricare in un vettore il primo scanf li carica nelle posizioni pari del vettore ed il secondo nelle posizioni dispari

No io sto parlado della funzione fscanf() non della funzione scanf() :rollo:

Questa cosa qua dovrebbe fare qualcosa per i file..

Ciauz

Stoicenko
30-12-2008, 14:29
ma ti sei letto per caso il link che ti ho mandato??

lmweb.it
30-12-2008, 15:38
fscanf legge da file mentre scanf legge da i file di input standard (tastiera) sono la stessa cosa solo che per usare f scanf bisogna prima effettuare l'accesso al file in modalitÓ lettura

mordrigan
30-12-2008, 17:30
immagino il codice del programma non sia completo cmq sia la fscanf come dicevano sopra legge da un file e memorizza in una variabile

immagino che prima di :


fscanf(fp, "%d", &punti[i * 2]);

ci sia come minimo una cosa del tipo



FILE * fp;
fp = fopen ("punti.txt","w+");

che apre un file tramite descrittore di file in modo da poterlo identificare e usare all'interno del programma
ora guardando il ciclo for che hai scritto


for(i=0; i<num; i++)
{
fscanf(fp, "%d", &punti[i * 2]);
fscanf(fp, "%d", &punti[i * 2 + 1]);
}


la prima fscanf legge dal descrittore fp un intero e lo memorizza in &punti[i*2]
punti immagino sia un array quindi memorizza il primo intero che trova nel file alla posizione [i*2] dell'array
la seconda fscanf fa la stessa cosa ma memorizza l'intero alla posizione [i*2+1]

oregon
30-12-2008, 19:09
Originariamente inviato da SergiusXP
Questa cosa qua dovrebbe fare qualcosa per i file..


Piuttosto che avere qualche vaga cognizione, perche' non leggi dal link che ti e' stato proposto?

SergiusXP
31-12-2008, 00:21
Originariamente inviato da oregon
Piuttosto che avere qualche vaga cognizione, perche' non leggi dal link che ti e' stato proposto?
guarda che l'ho letto. Stavo solo cercando di fargli capire la differenza fra la scanf e la fscanf -.-

oregon
31-12-2008, 16:19
Originariamente inviato da SergiusXP
guarda che l'ho letto.

Non sembra da quanto hai scritto e non sono stato solo io ad avere questa impressione...


Stavo solo cercando di fargli capire la differenza fra la scanf e la fscanf -.-

Ma a chi?

Guarda che sei tu che hai chiesto cosa fosse la fscanf ...

Comunque, tornando alla tua prima domanda ... hai capito adesso quel codice?

Loading