Come scrivere intero su file

di il
7 risposte

Come scrivere intero su file

Ciao ragazzi, avrei bisogno di un chiarimento:
come faccio a scrivere il valore di un intero su un file?
ad esempio, se io ho int var = 127, come posso scrivere il valore di var ovvero 127 su un file di testo?
siccome per scrivere uso la write, se do come parametri:

int var = 127;
write(fd, var, sizeof(int)) 

ovviamente mi da errore perche il secondo parametro di write deve essere un char *.
Come posso fare?

7 Risposte

  • Re: Come scrivere intero su file

    Usa il cast

    (char *)&var
  • Re: Come scrivere intero su file

    Non funziona
  • Re: Come scrivere intero su file

    Sei di poche parole ma così non si può dire molto..

    Cosa hai scritto adesso? Perché non funziona? Hai errori? Quali?
  • Re: Come scrivere intero su file

    
    int a = 127;
    write(fd, (char*)&a, sizeof(int);
    
    sul file indicato da fd mi scrive un simbolo illeggibile, tipo un quadratino come una matrice 2x2 dove la prima riga è 00 e la seconda è 7F

    io penso che il motivo sia che il valore int non può essere scritto cosi com'è, ma deve essere convertito in char, ma non credo si possa fare con un semplice cast, ma credo ci sia una qualche funzione o tecnica specifica, tipo atoi che fa esattamente il contrario.
  • Re: Come scrivere intero su file

    Guarda che hai un po' di confusione ...

    Il valore intero a 32 bit è fatto da 4 byte e in quel modo scrivi "in binario" (correttamente con il semplice cast). Ovviamente i valori binari NON sono leggibili in ASCII ma perfettamente leggibili dall'equivalente read.

    Se vuoi scrivere il valore in ASCII allora devi usare un buffer di caratteri per convertire il valore intero con una sprintf.
  • Re: Come scrivere intero su file

    Si sprintf è proprio quello che mi serviva, grazie mille x l'aiuto
  • Re: Come scrivere intero su file

    A questo punto perché utilizzare write e sprintf ? La write ha un senso se scrivi in binario e poi rileggi in binario con la read, operazioni molto veloci.

    Se devi scrivere in ASCII allora conviene usare solo la fprintf
Devi accedere o registrarti per scrivere nel forum
7 risposte