Exe che si chiude subito ? [C]

di il
11 risposte

Exe che si chiude subito ? [C]

Salve! Sono nuovo.. E nuovo anche nel C.. Ho studiato un po' Il Python ..ma poi ho visto che è leggermente piu usato il C.
Sono all'inizio del C..e ho provato a fare un esercizio che moltiplica 3 numeri che vengono dati dall'utente. (scanf() );
Uso Dev-c/c++ .. eseguo il Programma..ma appena metto il terzo numero e premo invio si chiude l'exe dopo meno di 1/2 di secondo .. non mi fa manco vedere il risultato dalla velocita..come mai?
#include <stdio.h>

int main (void)

{
    int num1;
    int num2;
    int num3;
    int moltiplicazione;
    
    printf("Dammi tre numeri da moltiplicare\n");
    scanf("%d", &num1);
    printf("Dammi il secondo numero\n");
    scanf("%d", &num2);
    printf("Dammi l'ultimo numero\n");
    scanf("%d", &num3);
    
    moltiplicazione = num1 * num2 * num3;
    
    printf("Il prodotto dei tre numeri è : %d\n", moltiplicazione );
    
    return 0;
}
    

11 Risposte

  • Re: Exe che si chiude subito ? [C]

    .. non mi fa manco vedere il risultato dalla velocita..come mai?
    beh, perché è molto veloce!

    Ti consiglio di cambiare IDE perché Dev-C è obsoleto e non più mantenuto.
    Successivamente prova a mettere questa funzione prima del return 0;
    
       getchar();
    
  • Re: Exe che si chiude subito ? [C]

    E' che sto seguendo un libro : C corso completo di programmazione.. Deitel..
    Quindi non so manco cosa significa quella funzione che mi hai scritto..la metterei..ma non so manco che funziona ha nel programma ..e ti chiederei se me la potresti spiegare in poche parole.. cosi mi porto avanti
    Che ide mi consigli?
  • Re: Exe che si chiude subito ? [C]

    
    #include <stdio.h>
    
    int main (void)
    
    {
        int num1;
        int num2;
        int num3;
        int moltiplicazione;
        
        printf("Dammi tre numeri da moltiplicare\n");
        scanf("%d", &num1);
        printf("Dammi il secondo numero\n");
        scanf("%d", &num2);
        printf("Dammi l'ultimo numero\n");
        scanf("%d", &num3);
        
        moltiplicazione = num1 * num2 * num3;
        
        printf("Il prodotto dei tre numeri e : %d\n", moltiplicazione );
       
       system("pause"); 
        return 0;
    }
    Ecco qui ora dovrebbe funzionare
  • Re: Exe che si chiude subito ? [C]

  • Re: Exe che si chiude subito ? [C]

    Be personalmente io mi trovo bene con dev c/c++ ma ti consiglio code bloks .... io vado per la 1° soluzione.
  • Re: Exe che si chiude subito ? [C]

    Dev-C++ è solo un IDE che usa Minimilistic GNU per Windows (WinGW) con un porting di gcc. Se ti piace gcc installati cygwin (Unix-like x Windows) oppure più semplicemente Linux.
    Se ti piace Windows esistono compilatori che sono nati per questo SO e sono anche gratuiti. L'ultima versione di Dev-C++ risale al 2005, nella quale venivano corrette alcune opzioni del compilatore. http://dev-cpp.cvs.sourceforge.net/viewvc/dev-cpp/V5/devcpp.exe?view=log.

    La system ("pause") è un pessimo metodo per interrompere l'esecuzione per programma perchè:
    1)E' una chiamata al sistema operativo con l'inclusione di tutto l'enviroment del processo di shell.
    2)Non è portatile: gira solo su DOS o Windows.
    3)Non è sicura. Anche il più handicappato degli hacker riesce a fare un exploit con conseguenze disastrose.

    La getchar() legge un carattere da tastiera. E' standard nel C e può svolgere lo stesso compito compatibilmente al sistema operativo usato. L'unica accortezza che bisogna avere è che a volte bisogna svuotare il buffer di tastiera prima di richiamarla. Questo perchè alcune funzioni di lettura non tolgono il carattere di INVIO ('\n').... ma questo è un'altro discorso già fatto miriadi di volte e anche legato anche a incomprensioni della scanf.

    Quello che mi viene da suggerire a te, ma soprattutto ad altri, consiste nel definire queste due righe all'inizio del programma ed usarne una o entrambe a seconda del caso:
    
    #define FLUSH  while (getchar() != '\n')
    #define PAUSE  getchar ()
    
    
    ...
      // Buffer sporco
      FLUSH;
      PAUSE;
    ...
      // Buffer pulito
      PAUSE;
    ...
    
    }
    ...
    
  • Re: Exe che si chiude subito ? [C]

    UN'altra chiusura rapida..ora manco mi fa venire la stringa che mi dovrebbe venire dopo l'if o l'else D:

    #include <stdio.h>

    int main (void)

    {
    int voto;

    printf("Dammi il voto :\n");
    scanf("%d", &voto);

    if (voto > 60) {
    printf("Promosso con in quanto il voto minimo era 60 e tu hai ");
    printf("%d\n",voto);
    }
    else {
    printf(" BOCCIATO!!\n");
    }
    return 0;
    }


    Come mai?? NetBeans non me lo fa installare sul pc.. non capisco il perchè proprio
  • Re: Exe che si chiude subito ? [C]

    Ma leggiamo o no ?!?
  • Re: Exe che si chiude subito ? [C]

    Scusa, ma le funzioni :
    #define FLUSH while (getchar() != '\n')
    #define PAUSE getchar ()

    e le altre che mi ha scritto non so manco cosa vogliono dire ..quindi non le metto non sapendo il loro significato
  • Re: Exe che si chiude subito ? [C]

    E allora continua a sperare che il tuo programma non termini alla fine. Vuoi imparare o vuoi rimanere fermo col tuo sapere. Sopra ixamit ti ha dato una spiegazione esaustiva su come si usa getchar e a cosa serve.
    Poi sei pregato di inserire i tag code ogni volta che scrivi un pezzo di codice.

    Altra cosa: se proprio,proprio non vuoi usare nessuna delle funzioni sopra, non avviare il tuo programma dentro il compilatore ma usa il prompt dei commandi una volta compilato il programma.
  • Re: Exe che si chiude subito ? [C]

    Scusatemi molto ragazzi .. Il problema era proprio Dev-c.. ora sto usando CodeBlocks... Mi fa vedere tutto..e sono io a chiudere con qualsiasi tasto l'applicazione, solo che se apro direttamente l'exe senza usare CodeBlocks l'app ad esempio in una semplice che chiede due numeri e li somma..
    Mi chiede i numeri , una volta inseriti premo invio e si chiude automaticamente tutto .. Provo nel mettere getchear e vi faccio sapere ..Grazie
Devi accedere o registrarti per scrivere nel forum
11 risposte