Pagina 1 di 1
[C]Esercizi 1.6-1.7 Il linguaggio C K&R[RISOLTO]
Inviato: gio 6 nov 2008, 12:14
da Plaoo
Salve a tutti sto iniziando a studiare il C ho appena acquistato il libro di K&R e pur conoscendo l'informatica teorica (cicli,variabili,funzioni, ecc) leggendo attentamente il libro mi sono fermato a questi esercizi:
1.6 Si verifichi che l' espressione getchar() != EOF abbia valore 0 o1 ho scritto questo:
Codice: Seleziona tutto
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
long c;
while ((c = getchar()) != EOF){
printf("%1d\n",(getchar()!= EOF));
}
return 0;
}
Sapete dirmi se è giusto??
1.7 Si scriva un programma che visualizzi il valore di EOF io scritto questo:
Codice: Seleziona tutto
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
long c;
while ((c = getchar()) != EOF){
printf("%1d\n",(getchar()!= EOF));
printf("%d\n", EOF);
}
return 0;
}
Il problema qua è che EOF vale -1 è giusto??
Scusate la banalità del post ma non posso sapere se quello che ho scritto è giusto non conoscendo affatto il reale valore di EOF nel libro non c'è scritto

Re: [C]Esercizi 1.6-1.7 Il linguaggio C K&R
Inviato: gio 6 nov 2008, 13:08
da Mario Vanoni
Plaoo ha scritto:Salve a tutti sto iniziando a studiare il C ho appena acquistato il libro di K&R e pur conoscendo l'informatica teorica (cicli,variabili,funzioni, ecc) leggendo attentamente il libro mi sono fermato a questi esercizi:
1.6 Si verifichi che l' espressione getchar() != EOF abbia valore 0 o1 ho scritto questo:
Codice: Seleziona tutto
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
long c;
while ((c = getchar()) != EOF){
printf("%1d\n",(getchar()!= EOF));
}
return 0;
}
Sapete dirmi se è giusto??
1.7 Si scriva un programma che visualizzi il valore di EOF io scritto questo:
Codice: Seleziona tutto
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
long c;
while ((c = getchar()) != EOF){
printf("%1d\n",(getchar()!= EOF));
printf("%d\n", EOF);
}
return 0;
}
Il problema qua è che EOF vale -1 è giusto??
Scusate la banalità del post ma non posso sapere se quello che ho scritto è giusto non conoscendo affatto il reale valore di EOF nel libro non c'è scritto

visto che includi stdio.h
leggiti
/usr/include/stdio.h
Re: [C]Esercizi 1.6-1.7 Il linguaggio C K&R
Inviato: gio 6 nov 2008, 13:12
da paolo86
Intanto direi che usare una variabile di tipo long per i caratteri è un tantino esagerato...
puoi usare al massimo int... comunque è meglio se usi char...
Per stampare il valore di EOF ti bastava fare:
Codice: Seleziona tutto
#include <stdio.h> //Necessario per la printf
int main()
{
printf("%d\n", EOF);
return 0; //Se la funzione ha un tipo di ritorno non puoi dimenticarti la return
}
Hai dimenticato anche le return e %d è solo per interi... per i long è %ld se non sbaglio, mentre per i caratteri %c...
Ciao!!
Re: [C]Esercizi 1.6-1.7 Il linguaggio C K&R
Inviato: gio 6 nov 2008, 14:56
da kreen
Plaoo ha scritto:1.6 Si verifichi che l' espressione getchar() != EOF abbia valore 0 o 1
Ciao.
Dovresti anche verificare che getchar() != EOF abbia valore 0. Invece nella condizione del while tu cicli finche' è diverso da EOF.
Codice: Seleziona tutto
#include <stdio.h>
#include <stdlib.h>
/* Se vuoi terminare, inviando EOF, premi Ctrl-d */
int main(void)
{
int c = 0;
while (c = (getchar() != EOF)){
printf("getchar() != EOF ---> %1d\n", c);
}
printf("getchar() == EOF ---> %1d\n", c);
return 0;
}
Re: [C]Esercizi 1.6-1.7 Il linguaggio C K&R
Inviato: gio 6 nov 2008, 18:27
da Plaoo
paolo86 ha scritto:Intanto direi che usare una variabile di tipo long per i caratteri è un tantino esagerato...
puoi usare al massimo int... comunque è meglio se usi char...
Per stampare il valore di EOF ti bastava fare:
Codice: Seleziona tutto
#include <stdio.h> //Necessario per la printf
int main()
{
printf("%d\n", EOF);
return 0; //Se la funzione ha un tipo di ritorno non puoi dimenticarti la return
}
Hai dimenticato anche le return e %d è solo per interi... per i long è %ld se non sbaglio, mentre per i caratteri %c...
Ciao!!
E' questo l'ho fatto ma mi sembrava strano che il valore di EOF sia -1
kreen ha scritto:
Codice: Seleziona tutto
.../* Se vuoi terminare, inviando EOF, premi Ctrl-d */...
Sapevo che EOF era Ctrl-Z.
Comunque grazie a tutti quelli che mi hanno aiutato, praticamente facevo le cose giuste (non ho postato tutte le prove che ho fatto) mi siete serviti per controllare il mio lavoro grazie ancora

Re: [C]Esercizi 1.6-1.7 Il linguaggio C K&R[RISOLTO]
Inviato: gio 6 nov 2008, 18:46
da kreen
Plaoo ha scritto:Sapevo che EOF era Ctrl-Z.
http://www.mail-archive.com/lin-club@vi ... 00987.html
Ciao e buon studio.