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

    [C] Contare numero caratteri

    Uso questo codice per contare i caratteri:

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    main()
    {
          long nc;
          
          nc = 0;
          while (getchar() != EOF)
    
                ++nc;
           printf("%1d", nc);
     
          system("pause");
          return 0;
    }
    Lancio il programma, inserisco il testo, e quando do l'invio, mi parte il trattino lampeggiante e non conteggia nulla.

    Da cosa potrebbe dipendere?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Certo perché il while lo continui fintanto che il carattere immesso non è EOF, che di default è ctrl+z.

    Due sono le cose: o scrivi direttamente !='\n' in modo tale che quando vai a capo finisce la lettura oppure fai una define (cosa del tutto analoga) per modificare l'EOF

    #define EOF '\n'

  3. #3
    Originariamente inviato da YuYevon
    Certo perché il while lo continui fintanto che il carattere immesso non è EOF, che di default è ctrl+z.

    Due sono le cose: o scrivi direttamente !='\n' in modo tale che quando vai a capo finisce la lettura oppure fai una define (cosa del tutto analoga) per modificare l'EOF

    #define EOF '\n'
    Si, cosi funge, avendo copiato paro paro il codice da un libro, credevo funzionasse...

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Strano, o meglio: forse non sta scritto che basta premere invio per vedere visualizzato il conteggio ma lo hai pensato tu...

    In effetti se una volta finito di scrivere premi due volte ctrl+z ti si visualizza il conteggio, ma questo appunto perché EOF (di default) è ctrl+z. Se poi sul libro dice diversamente... beh, non so che dirti ^^

  5. #5
    Originariamente inviato da supergeniux
    Si, cosi funge, avendo copiato paro paro il codice da un libro, credevo funzionasse...
    il programma funzione perfettamente, semplicemente lo devi terminare con EOF (quindi ctrl-D o ctrl-Z su windows). Tieni presente che se lo tieni com'è, senza modificare l'identificatore EOF (cosa che non mi sembra tanto corretta) puoi anche reindirizzare lo stdin da un file, prelevando l'input da un file esterno.
    ciao
    sergio

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.