PDA

Visualizza la versione completa : [C++] Lettura insolita short da file con fscanf


Cesaropa12
25-12-2006, 19:15
Per leggere su file ho utilizzato l'istruzione:
short m,n;
fscanf(Input,"%d%d",&m&n);

Ho letto il file che iniziava con
5 5.
Ma il valore di m era 0. Ho provato a dichiarare m e n con int e tutto è funzionava correttamente e cioè il valore sia di m che di n era uguale a 5.

andbin
25-12-2006, 19:50
Originariamente inviato da Cesaropa12
Per leggere su file ho utilizzato l'istruzione:
short m,n;
fscanf(Input,"%d%d",&m&n);

Ho letto il file che iniziava con
5 5.
Ma il valore di m era 0. Ho provato a dichiarare m e n con int e tutto è funzionava correttamente e cioè il valore sia di m che di n era uguale a 5. %hd per ricevere il valore in variabili 'short int' (short).

Cesaropa12
26-12-2006, 15:02
Io pensavo si potesse leggere indifferentemente qualunque dato. E per leggere tutti gli altri?
Unsigned int
Unsigned long
long,
long double

andbin
26-12-2006, 22:26
Originariamente inviato da Cesaropa12
Io pensavo si potesse leggere indifferentemente qualunque dato.Non certo usando solamente %d. Tu alla scanf passi dei puntatori, in modo che la scanf possa scrivere sulle variabili. Come potrebbe sapere la scanf a cosa puntano quei puntatori, secondo te?? ..... Lo "scopre" dagli specificatori indicati nella stringa di formato!!!


Originariamente inviato da Cesaropa12
E per leggere tutti gli altri?
Unsigned int
Unsigned long
long,
long double E leggere la documentazione della "famiglia" di funzioni scanf (perché c'è anche sscanf, fscanf, ecc...), su internet e/o sulla guida del tuo compilatore, no??

Unsigned int ---> %u
Unsigned long ---> %lu
long ---> %ld
long double ---> %Lf

Cesaropa12
27-12-2006, 14:02
Grazie mille. E unsigned, signed char e unsigned signed short?

andbin
27-12-2006, 14:41
Originariamente inviato da Cesaropa12
Grazie mille. E unsigned, signed char e unsigned signed short? Ma li vuoi proprio sapere tutti? :D

- http://msdn2.microsoft.com/en-us/library/kwwtf9ch(VS.80).aspx

- http://www.linuxmanpages.com/man3/scanf.3.php

Il primo link è relativo a VC++, il secondo a Linux.

Loading