Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Problema con C

  1. #1

    Problema con C

    Ciao ragazzi, sono nuovo ed ho appena cominciato a studiare programmazione ed ecco che subito arrivano i primi problemi:
    codice:
    #include <stdio.h>
    main()
    {
      int ch, i = 0;
      while ((ch = getchar())!=EOF) i++;
      printf ("%d\n" ,i);
    }
    Questo è un programma che stampa a video ogni lettera che spingo dalla tastiera no? E fino a la forse ci sono arrivato...
    Ma mi spiegate a cosa servono queste variabili...
    int ch, i =0; (Perchè 0...)
    while() continua il suo ciclo fino a quando l'espressione associata nn risulta falsa e fino a qui ok.
    ((ch = getchar()) In pratica qui dice che getchar è uguale a 0 ?... Ma cosa vorrebbe dire?
    Andando avanti: i++, una variabile con incremento e ok, ma ora cosa c'entra ora...
    Oddio, help me !

  2. #2
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    No, è un programma che conta il numero di caratteri letti fino a EOF (End of file, Ctrl+z in Windows). 0 è assegnato solo a i e non a ch, (ch = getchar()) assegna un nuovo carattere letto dallo stdin (Standard input) a ch e != EOF controlla che sia diverso da (appunto) EOF, i++ incrementa una variabile counter...
    printf stampa il numero di caratteri.
    Per essere più precisi ch dovrebbe essere di tipo char e non int, inoltre non è affatto necessaria come variabile percui si può semplificare a
    codice:
    #include <stdio.h>
    int main()
    {
      int i = 0;
      while (getchar()!=EOF) i++;
      printf("%d\n" ,i);
      return 0;
    }
    E' importante dare un tipo a main, che sia int o void, nel caso di int è necessario ritornare un valore (zero significa che non ci sono errori). Nel tuo codice, ad essere precisi, era implicito il tipo int, ma mancava comunque il return e compilando dovresti aver ottenuto 2 warning che segnalano una possibile condizione di errore; in generale è meglio non ignorarli.

    P.s. la prossima volta usa i tag code. Ti consiglio di comprare un buon libro e seguire quello.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  3. #3
    Grazie mille per la risposta, che libro mi consigli? (Ho appena cominciato, e devo dire che è molto difficile dalle guide online)

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.