Database

di il
8 risposte

Database

È possibile creare un programma che quando si chiude i dati inseriti nelle variabili non si azzerino?
Esempio se io dichiaro la variabile A avvio il programma e mi dice il valore di A e poi mi chiede di inserire un nuovo valore poi quando riapro il programma mi dice il valore di A che avevo inserito precedentemente.
È possibile?

8 Risposte

  • Re: Database

    Devi serializzare l’oggetto in un file binario oppure se preferisci in una codifica testuale tipo XML o JSON
  • Re: Database

    Dopo delle ricerche ho trovato i file che potrebbero essere utili ma uso se uso uno switch per selezionare lettura o scrittura sulla scrittura non mi fa scrivere più di una parola;
    Questo è il codice che uso per la scrittura:

    char a[100];
    ofstream f("Magazzino.txt", ios::app);
    if(!f)
    {
    cout<<"Errore nella scrittura del file";
    return 1;
    }
    cout<<"Dimmi cosa vuoi aggiungere: ";
    gets(a);
    f<<a<<endl;
    f.close();
    cout<<"Scrittura completata con successo"<<endl;
  • Re: Database

    Però se uso questo codice da solo senza inserirlo in uno switch o in un if mi funziona e riesco a scrivere esempio una frase intera.
    Ho già provato anche con cin>>a; e scanf("%s",&a); ma niente dentro l'if e lo switch non funziona
  • Re: Database

    Ma che vuoi dire? Mostra sempre il codice che non ti funziona e tra tag code.
  • Re: Database

    Usando:
    gets(a), scanf("%s",&a) o cin>>a;
    se scrivo esempio "ciao come stai" nel file riporterà solo "ciao"
    Come faccio per far riportare tutta la frase?
  • Re: Database

    Usa le string di C++ e la gestione

    string a;
    gerline(cin, a);
  • Re: Database

    Fatto, ora non mi fa nemmeno scrivere la frase che chiude subito il programma.
    Questo è il codice:
    #include <iostream>
    #include <fstream>
    #include <stdlib.h>
    #include <stdio.h>
    #include <string>

    using namespace std;

    int main()
    {
    int S;

    cout<<"Menu':\n";
    cout<<"Premere 1 aggiungere qualcosa al magazzino\nPremere 2 per leggere il magazzino\n";
    cout<<"Scelta: ";
    cin>>S;

    if(S==1)
    {
    string a;
    ofstream f("Magazzino.txt", ios::app);
    if(!f)
    {
    cout<<"Errore nella scrittura del file";
    return 1;
    }
    printf("Dimmi la parola: "); //qua c'è il problema, da qua passo a
    getline(cin, a);
    f<<a<<endl;
    f.close();
    cout<<"Scrittura completata con successo"<<endl; //qua
    }else{

    FILE * leggi;
    char riga[100];
    leggi=fopen("file.txt", "r");
    if(leggi==NULL){
    cout<<"Errore"<<endl;
    return 1;
    }
    fgets(riga, 100, leggi);
    fclose(leggi);
    cout<<riga<<endl;
    }



    system("pause");
    return 0;
    }
  • Re: Database

    Aggiungi

    #include<limits>

    e dopo la cin >> S; aggiungi

    cin.ignore(numeric_limits<streamsize>::max(), '\n');

    P.S.usa i tag code per il codice nel forum!
Devi accedere o registrarti per scrivere nel forum
8 risposte