Scrittura di interi su file [c/c++]

di il
12 risposte

Scrittura di interi su file [c/c++]

Leggendo un esercizio in c/c++ ho visto che quando leggeva un numero scritto su un file prima di metterlo in un array lo convertiva in un intero e poi dopo aver fatto una serie di operazione riscriveva il numero sul file solo dopo averlo convertito di nuovo in una stringa quindi mi chiedevo se su un file si possono scrivere numeri nel formato int.

12 Risposte

  • Re: Scrittura di interi su file [c/c++]

    Se intendi in binario, sì, si possono scrivere.
  • Re: Scrittura di interi su file [c/c++]

    Facendo una cosa del tipo..
    ...
    int num = 42;
    ostream file("miofile", ios::binary);
    file.write((char*)&num, sizeof(int));
    ...
    
    per scrivere, e un analoga chiamata a file.read(...) per leggere.
    In ogni caso, una semplice ricerca su google "c++ binary files" ti darà tutte le informazioni che cerchi.
  • Re: Scrittura di interi su file [c/c++]

    Intendo un numero decimale. Per esempio devo scrivere su un file il nome di un pezzo e il suo prezzo
    Ad esempio dichiarando
    .....
    int i=399.99;
    char nomepezzo [20];
    strcmp(nomepezzo,"Televisore");
    ofstream fout;
    ....
    Devo scrivere questi dati su file e io farei
    ....
    fout << nomepezzo << " " << i << \n;
    ....
    Nell'esercizio che ho letto la stringa veniva direttamente scritta su file mentre il numero int/float veniva convertito in una stringa con la funzione sprinft() e solo dopo scritto su file.
  • Re: Scrittura di interi su file [c/c++]

    Puoi benissimo fare anche
    ofstream file("miofile");
    int n = 400;
    file << n;
    P.s.:
    int i=399.99;
    è ovviamente sbagliato.. e
    strcmp(nomepezzo,"Televisore");
    messo lì da solo non ha senso
  • Re: Scrittura di interi su file [c/c++]

    Si sono fuso dovevo mettere float e strcmp doveva essere strcpy ... Scusate ... Allora non capisco perchè in quel esercizio se è voluto complicare la vita facendo conversioni inutili...
    comunque grazie mille
  • Re: Scrittura di interi su file [c/c++]

    Non è che abbia capito molto, anche perché hai fatto un po' di confusione.

    Hai mischiato C e C++ ... Il codice di cui parli era in C o C++ ? E a te serve in C o C++ ?
  • Re: Scrittura di interi su file [c/c++]

    Essendo il primo anno che studio un linguaggio di programmazione ho avuto professori che mi hanno insegnato un misto tra c e c++ quindi a volte fatico a distinguerli e l'esercizio che ho letto era anch'esso un misto e vorrei evitare di proporlo perchè è abbastanza lungo. Riassumendo, l'esercizio chiedeva di ordinare un file. Quando scriveva i dati presenti sul file in un array, le parti numeriche venivano convertite da stringa nel formato int in modo da poter eseguire eventuali calcoli. Una volta effettuati prima di essere scritti in un nuovo file queste parti numeriche in formato int/float venivano convertite nuovamente in stringa tramite la funzione sprinft(). Io mi chiedevo del perchè nel file non erano presenti dei numeri nel formato int pensando che magari in un file sono ammissibili solo le stringhe.
    quindi
    
    int i=100;
    ofstream file;
    ...
    file << i;
    Pensavo fosse sbagliata. Non so se sono stato più chiaro.
  • Re: Scrittura di interi su file [c/c++]

    In un file puoi memorizzare i dati come sequenze di caratteri ASCII (modo testo) o come sequenze di byte (modo binario).

    Con la sprintf (in C) prepari i dati per essere scritti in modo testo. Ma puoi scriverli direttamente in binario.
  • Re: Scrittura di interi su file [c/c++]

    oregon ha scritto:


    In un file puoi memorizzare i dati come sequenze di caratteri ASCII (modo testo) o come sequenze di byte (modo binario).

    Con la sprintf (in C) prepari i dati per essere scritti in modo testo. Ma puoi scriverli direttamente in binario.
    si ma se scrivo un numero sul file il numero nel sistema decimale va bene comunque o devo convertire in stringa? Nel messaggio di prima con i=9 nel file avrei avuto il numero 9 nel sistema decimale non in binario giusto?
  • Re: Scrittura di interi su file [c/c++]

    Tu fai confusione con i termini ... che intendi con "nel sistema decimale"? Anche la stringa è espressa nel sistema decimale ...
  • Re: Scrittura di interi su file [c/c++]

    Nell'esercizio estraeva il numero dal file in un vettore. Poi usava la funzione atoi , ciò significa che il che converte una stringa in un numero. E ho pensato che sul file non possa esserci ad esempio il numero nove nel formato int. Quindi se devo scrivere il numero 9 su file posso o devo convertirlo in stringa? è questa la mia domanda
  • Re: Scrittura di interi su file [c/c++]

    Ripeto ... cosa vuol dire "il numero 9 nel formato int" ? Se non siamo d'accordo con la terminologia non andiamo avanti ...

    Ti ripeto ... se nel file il dato è memorizzato in formato testo, ovvero in ASCII, quando viene letto deve essere convertito in int.

    Se non vuoi memorizzare il dato come testo ma nello stesso formato utilizzato in memoria (int) allora devi scriverlo sul file in binario. E leggerlo in binario. Userai le funzioni fwrite e fread.
Devi accedere o registrarti per scrivere nel forum
12 risposte