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

    [C] getchar insrire EOF

    salve sto imparando adesso a programmare in C grazie al uso di un manuale,il problema che mi si pone e questo:
    il libro mi a dato il sorgente di questo programma che dovrebbe contare le lettere che io digito e poi stamparle a schermo il numero,il programma termina con EOF. O fatto delle ricerche e so che il carattere EOF su linux si fa digitando ctrl+c.
    ma facendo cosi il programma non stampa niente ,e termina la sua esecuzione.

    codice:
    #include <stdio.h>
    main()
    {
        long nc;
        
        nc=0;
        while (getchar() != EOF)
    	++nc;
        printf("%1d\n", nc); 
    }
    le domande sono come faccio a dare al programma EOF e concludere la sua esecuzione con la stampa dei numeri dei caratteri da me digitati "che gioco di parole "

    sono sotto linux come posso inviare un file reale a questo programma o provato qualcosa del genere ma non funziona
    file.txt > ./a.out
    file.txt | ./a.out
    ringrazzio in anticipo tutti quelli che mi d'assero una mano.

  2. #2
    getchar è la funzione che riceve da console un carattere alla volta, se non sbaglio a te serve la fgetc ( cerca su cplusplus.com la trovi tutte le funzioni )

    e comunque l'impostazione è sbagliata perchè il while deve essere una cosa del genere:

    while( (c=getchar()) !=EOF )
    //> stampa c

    byez

  3. #3

    Re: [C] getchar insrire EOF

    Originariamente inviato da Megrecor
    O fatto delle ricerche e so che il carattere EOF su linux si fa digitando ctrl+c.
    EOF = CTRL+D
    CTRL+C serve per terminare il programma.
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    xnavigator si e vero infatti il manuale in seguito usa la forma che ai detto tu,quello era il primo esempio.

    MItaly ai ragione EOF e CTRL+D infatti il programma funziona

    grazi tanto a tutti e due.

  5. #5
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790

    Re: [C] getchar insrire EOF

    Originariamente inviato da Megrecor
    salve sto imparando adesso a programmare in C grazie al uso di un manuale,il problema che mi si pone e questo:
    il libro mi a dato il sorgente di questo programma che dovrebbe contare le lettere che io digito e poi stamparle a schermo il numero,il programma termina con EOF. O fatto delle ricerche e so che il carattere EOF su linux si fa digitando ctrl+c.
    ma facendo cosi il programma non stampa niente ,e termina la sua esecuzione.

    codice:
    #include <stdio.h>
    main()
    {
        long nc;
        
        nc=0;
        while (getchar() != EOF)
    	++nc;
        printf("%1d\n", nc); 
    }
    le domande sono come faccio a dare al programma EOF e concludere la sua esecuzione con la stampa dei numeri dei caratteri da me digitati "che gioco di parole "

    sono sotto linux come posso inviare un file reale a questo programma o provato qualcosa del genere ma non funziona
    file.txt > ./a.out
    file.txt | ./a.out
    ringrazzio in anticipo tutti quelli che mi d'assero una mano.
    devi cambiare il main in int main(int argc,char* argv[])
    e poi da terminale basta fare tuo_programma file.txt
    argv[0] contiene l'indirizzo del programma quindi i file che passi sono in posizione da 1 in poi
    conoscenze: C/C++, Java, PHP, Python
    [No PM tecnici o di qualsiasi genere]

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Sì ma quando anche si passasse un file come input al programma non è che questo se ne farebbe granché visto che non ci sono istruzioni di input da file. getchar() legge caratteri dallo stream di input standard che è associato alla tastiera... per farle leggere caratteri da un file di testo generico bisognerebbe aprire tale file con file descriptor 0 che pur non essendo una cosa difficile non è certamente per chi ha appena cominciato a programmare... oppure più semplicemente si può ricorrere alle funzioni per la lettura da file, che però in quel programma non ci sono, quindi...
    every day above ground is a good one

  7. #7
    Metflar "" int main(int argc,char* argv[]) ""questa forma mi e famigliare il libro la propone nel secondo capitolo,

    YuYevon bello quello che avete detto ma non o capito molto,se ne riparlerà più in la

  8. #8
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790
    Originariamente inviato da Megrecor
    Metflar "" int main(int argc,char* argv[]) ""questa forma mi e famigliare il libro la propone nel secondo capitolo,

    YuYevon bello quello che avete detto ma non o capito molto,se ne riparlerà più in la
    l'hai chiesto tu ^^
    conoscenze: C/C++, Java, PHP, Python
    [No PM tecnici o di qualsiasi genere]

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 © 2025 vBulletin Solutions, Inc. All rights reserved.