DOMANDA Posso usare la fscanf per leggere file in modalità non tradotta?

ilfe98

Moderatore
Staff Forum
Utente Èlite
3,052
1,278
CPU
Intel i7 7700K
Dissipatore
Bequiet Dark rock pro 4
Scheda Madre
Msi pc mate z270
HDD
Seagate barracuda 1tb, silicon power NVME 500gb
RAM
Patriot viper steel 3733Mhz
GPU
Inno 3d gtx 1080 herculez design
Monitor
Asus mg279q
PSU
Corsair HX750
Case
Itek lunar 23
Net
Tiscali ftth
OS
windows 10,mint,debian,Arch linux
SAlve,stavo vedendo un esercizio sui file aperti in modalità non tradotta e ad un certo punto è stata usata la fscanf in questo modo:
C:
int num
          //  num = fscanf(fin,"%hd", &num);
           // fread(&num, 1, 1, fin);
            num=fgetc(fin);
ora non ho mai visto quel format %hd,ho cercato un po' e la spigazione è uguale ed identica a %d ?!?!?
Inoltre il file fin è aperto in modalità non tradotta quindi non potrei usare la fscanf giusto?
 

Andretti60

Utente Èlite
6,440
5,091
Non so cosa intendi per file aperto in maniera "non tradotta".
In C, apri un file con una fopen per leggerlo in maniera bufferata (se si dice in italiano), se usi una fprintf scrivi i dato in maniera formattata (quindi leggibili) o fwrite (in maniera non formattata, quindi formato binario). Mischiare i modi e' pericoloso (ma fattibile) perche' rende molto difficile la lettura. Per leggerlo, devi usare esattamente la stesse chiamate con lo stesso formato. Per esempio, se hai usato una fprintf per scrivereuna stringa, devi usare una fscanf per leggerla. Nota: alcune implementazioni del C richiedono il formato "b" (binary) per creare il file e permettere l'accesso in maniera non formattata (lo usava Microsoft per esempio).
il formato "%hd" significa che il valore e' un short (due byte)
 
  • Mi piace
Reazioni: Mursey

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili