+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 6 su 6

[C] Comando "Exit" per uscire dal programma

  1. #1
    Missileback non  in linea Scolaretto
    Salve, dovrei fare una specie di inserimento dati in un file di testo.
    Questo file di testo ha solo una colonna che devo mettere solo gli euro che spendo.

    esempio:
    200,30
    120,20
    0,50
    2,10

    e cosi via.
    ora mi chiedevo come faccio fare con un do while far che l'utente digita il comando exit ed io faccio terminare l'esecuzione del programma e salvo gli ultimi dati inseriti.

    Devo ancora scrivere il programma .. ma non so come fare il famoso comando "exit".

    vi ringrazio molto e sto studiando il c che tanto faccio cose personali.

    saluti.

  2. #2
    L'avatar di Windows M
    Windows M non  in linea Scolaretto
    Ciao,
    non si riesce a capire se il problema sia il do-while, nel qual caso di consiglio di leggerti un buon manuale, oppure se il problema sia nella sintassi della chiamata ad exit: fondamentalmente la exit esce dal programma ed accetta un numero, lo stato di uscita, come parametro.
    Per vedere come funzioni esattamente ti consiglio, se sei sotto Linux (o uno UNIX a tua scelta) di scrivere sul terminale "man exit", oppure exit - C++ Reference

    Edit: perdona l'abbaglio, man exit fornisce, ovviamente, informazioni riguardo al comando della shell (almeno con la mia configurazione), se vuoi leggere comunque una manpage exit(3): cause normal process termination - Linux man page

    Ciao
    Ultima modifica di Windows M; 06-02-2014 19:57 
    ℹ️ Leggi di pi su Windows M ...

  3. #3
    Missileback non  in linea Scolaretto
    scusa, ma mi sono sbagliato io a spiegarmi ..

    non vorrei usare l'exit come hai capito tu.

    Ma volevo uscire dal ciclo o meglio "Hai finito di inserire i dati s/n", tutti esempi che vedo mettono solo un char io vorrei mettere la parole "exit" .

    come posso fare?
    grazie mille e buona serata e ci sentiamo domani.
    saluti.

  4. #4
    Guarda ... ti devi spiegare pi chiaramente altrimenti non si capisce cosa vuoi ...

    Se devi terminare un ciclo prima della sua fine "normale" puoi utilizzare l'istruzione

    break

    da eseguire in base ad una if che controlli la stringa di input con la funzione strcmp.

    A quel punto puoi scrivere "Exit" o "pippo" o "quellochevuoi" e il ciclo viene terminato.

    Ma parliamo di ciclo non di "programma" come hai messo nel titolo del thread (e per cui, giustamente, hai avuto gi una risposta).

    Quindi, per non perdere tutti tempo, chiarisci la questione e accenna a scrivere un codice per farci capire.
    Ultima modifica di AntonioG; 06-02-2014 20:51 
    ℹ️ Leggi di pi su AntonioG ...

  5. #5
    Missileback non  in linea Scolaretto
    ecco il codice che sto facendo :

    Codice PHP:
    #include <stdio.h>
    #include <stdlib.h>

    int main()
    {
       
    char euro[256];
       
    char finito;
       
    char nomefile[]="uscite_2014.txt";
       
    FILE *Fp1;

       
    // Apro il file in modalita' append e lettura testo (a+)
       
    Fp1 fopen(nomefile"a+"); // MODIFICA
       
       
    if (Fp1==NULL){
           
          
    printf("File %s not found\n"nomefile);
          
          exit(-
    1); 
       }
       
       
    printf("Il puntatore (*Fp) al file %s e' %d\n\n"nomefileFp1);
        
       
    finito='n';
       
       while((
    finito=='n') || (finito=='N'))
       {
          
    printf("Inserire Euro: "); 
          
          
    scanf("%s"euro);
          
          
    fprintf(Fp1"%s\n"euro);
          
          
    fflush(stdin);
          
          
    printf("Finito? S(i) oppure N(o) --> ");
          
          
    scanf("%c", &finito);
       }

      
       
    rewind(Fp1);  // riavvolgo il file per poterlo rileggere dall'inizio
       
       
    fflush(Fp1);
       
       
    fclose(Fp1);   // mi ricordo di chiudere il file 
       
       
    fflush(stdin);
       
       
    getchar(); 
       
       exit(
    0);

    vedi variabile char finito;

    come dici tu come posso variare il codice.

    grazie mille e buona serata.
    Ultima modifica di Missileback; 06-02-2014 22:26 

  6. #6
    L'avatar di Windows M
    Windows M non  in linea Scolaretto
    Ciao,
    il tuo problema non sta, chiaramente, nell'uscita dal ciclo e ti ricordo, che almeno all'inizio, l'utilizzo del break (e del continue) decisamente sconsigliato.
    Quello che ti succede deriva da un utilizzo sbagliato della fflush che sarebbe da utilizzarsi esclusivamente per gli stream di output ed il suo comportamento non definito nel caso di stream di input (nel tuo caso stdin), inoltre la prima scanf non "cattura" lo "\n" dallo stdin che quindi, essendo un carattere, viene letto dalla seconda scanf e viene inserito in finito ed il tuo ciclo termina prima del tempo; Per risolvere quindi i tuoi problemi rimouvi la fflush e inserisci una getchar dopo le scanf.

    Infine ti ricordo che la scanf deprecata (anche a causa dei problemi che tu stesso hai riscontrato) e che sarebbe meglio utilizzare funzioni come la getline, almeno nei programmi "seri"

    Ciao
    ℹ️ Leggi di pi su Windows M ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Riconoscere utenti multipli con il comando Environ("USERNAME"
    Da paoloderigo nel forum Microsoft Access
    Risposte: 4
    Ultimo Post: 30-09-2020, 11:42
  2. Risposte: 4
    Ultimo Post: 01-05-2016, 13:10
  3. Comando "SendKey" per intercettare finestre...
    Da fabios nel forum Microsoft Excel
    Risposte: 7
    Ultimo Post: 18-02-2012, 18:52
  4. Pulsante di comando "ripristina e compatta"
    Da pier42 nel forum Microsoft Access
    Risposte: 2
    Ultimo Post: 28-02-2011, 09:42
  5. Risposte: 6
    Ultimo Post: 17-12-2004, 23:27