Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    229

    [C]: alle prime armi

    ciao a tutti sono alle prime armi con C, e volevo scrivere un semplice programma:

    #include <stdio.h>

    main()
    {
    int i;
    printf("Scrivi un intero");
    scanf("%d", i);

    if(i>100)
    printf("minore di 100");
    else
    printf("maggiore o uguale a 100");
    }
    all'esecuzione di questo semplice programma, mi visualizza il terminale,
    esegue la prima printf, ma una volta che scrivo un intero e do l'invio il
    terminale si chiude automaticamente. Dove sbaglio????
    grazie a chiunque mi dia una mano a capire i dilemmi dell'informatica.
    Ad maiora
    Ennio
    Ad Maiora

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    81
    Ciao robboso se hai qualche problema con il C puoi chiedere aiuto a me (anche io lo sto studiando ma sono + avanti di te...).
    Allora l'errore sta qui:
    scanf("%d", i);
    lo scanf è differente dal printf,infatti devi mettere &i
    Per il resto c'è un errore (penso di distrazione) nell'if:deve essere i<100 per dar senso alle printf.Ti consiglierei di modificare il programma così:
    #include <stdio.h>

    main()
    {
    int i;
    printf("Scrivi un intero\n");
    scanf("%d", &i);

    if(i<100)
    printf("minore di 100");
    else if(i==100)
    printf("uguale a 100");
    else
    printf("maggiore di 100");
    }

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    229
    ho provato come mi hai detto ma mi da sempre il solito problema!!
    Ad Maiora

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,306

    Supposizione...

    Non sono esperto di C ma...non è che il problema è dovuto al fatto che manca l'acquisizione di un INVIO o di un altro tasto prima di concludere il programma?

    In questo modo, quando il programma termina, la finestra del Prompt dei Comandi viene chiusa istantaneamente senza permettere di prendere nota dei dati visualizzati poco prima.

    E' questo il problema?

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    l'errore segnalato da InferNOS è cmq un errore, il tuo problema però non è causato da quell'errore, anzi non è un errore.

    La console quando esaurisce il buffer di output e quindi non ha niente altro da stampare si chiude, per evitare questo o usi il comando "pause" di windows o metti un qualsiasi sistema per intercettare l'input e bloccare il flusso.

    o fai:

    system("PAUSE");

    o metti un getch(), un getchar() un altro scanf o altri sistemi di input


    se non ti è chiaro il motivo per il quale si mette & davanti la variabile te lo spuego: in C come in altri linguaggi esistono i puntatori che praticamente contengono l'indirizzo di memoria della variabile, se tu passi i alla funzione, il valore che legge non saprà dove metterlo visto che tu gli passi il valore di i e non la sua posizione in memoria; quindi quando fai &variabile ottieni l'indirizzo di memoria di quella variabile, questo indirizzo può essere inserito in un puntatore che si dichiara cos':

    Tipo* nome;

    Prova a creare una variabile int i con valore 5 e a stampare il risultato di i e di &i. Vedrai che uno mostra 5 e l'altro qualcosa come 0x24153h o circa(l'indirizzo).

    spero di essere stato chiaro.


    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

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.