Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [C] windows 7 problema "hello world"

    salve a tutti, ho da poco intrapreso l'apprendimento del C da autodidatta, usando un libro abbastanza famoso, che forse qualcuno conosce: "C corso completo di programmazione";
    ma mi è già sorto un problema.
    prima usavo win xp e un ide obsoleto come turbo C; ma tutto andava bene (o, almeno, riuscivo a scrivere programmi super-semplici tipo hello world o roba simile).
    ora uso win 7 e un ide decisamente più avanzato come microsoft visual studio 2010.
    (non ho aperto la discussione nel forum apposito perchè il problema non è con l'ide)
    però quando eseguo un programma con una scrritta da stampare a video, il prompt si apre con la scritta, ma si chiude dopo una frazione di secondo!!!
    non so se il problema sia con il codice (non penso) ma ve lo posto per sicurezza:

    #include <stdio.h>

    int main(void)
    {
    printf("hello world");

    return 0;
    }

    grazie a tutti ciao

  2. #2
    Il programma viene lanciato, ma naturalmente termina prima che tu riesca a vedere il risultato; per risolvere il problema puoi mettere un breakpoint sul return 0, oppure inserire una getchar(); prima del return 0; in modo che prima di terminare attenda la pressione di Invio.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    gentilissimo... ma io sono ancora novello mi puoi spiegare come inserire la getchar? grazie mille ancora...

  4. #4
    Non c'è molto da dire... inserisci getchar(); prima di return 0;
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    yuppiiiiiiii funzionaaaa
    grazie mille

  6. #6
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    50
    potevi inserire semplicemente alla fine.


    codice:
    system("pause");
    codice:
    code

  8. #8
    in realtà farebbe meglio a non usarla e in generale ad evitare per quanto possibile le System
    a livello di operazioni sono parecchio onerose e in più non è portabile in tutti i sistemi

    un esempio di ciò che fa la chiamata system()
    t's a very expensive and resource heavy function call. It's like using a bulldozer to open your front door. It works, but the key is cleaner, easier, cheaper. What system() does is:

    suspend your program

    call the operating system

    open an operating system shell (relaunches the O/S in a sub-process)

    the O/S must now find the PAUSE command

    allocate the memory to execute the command

    execute the command and wait for a keystroke

    deallocate the memory

    exit the OS

    resume your program

    There are much cleaner ways included in the language itself that make all this unnessesary.

  9. #9
    Originariamente inviato da asteroid
    potevi inserire semplicemente alla fine.


    codice:
    system("pause");
    Una delle mie priorità su questo genere di domande è proprio evitare che la gente si prenda l'abitudine di usare la funzione system, per i motivi che ho già detto un milione di volte in passato.
    Amaro C++, il gusto pieno dell'undefined behavior.

  10. #10
    Con l'introduzione della pausa finale (con getchar o altro) in realtà è stata come minimo alterata la specifica del programma che, si suppone, fosse solo quella di scrivere "hello world" a console ed uscire, non quella di scrivere "hello world" a console ed aspettare ad infinitum.

    Per vederne il risultato prima che il programma si chiudesse, potevi ad esempio "lanciare" il programma direttamente da console, oppure utilizzare un debugger.
    ;-)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.