PDA

Visualizza la versione completa : [C] esercizio su getchar()


sko
05-09-2003, 10:05
main()
{
char c;

c=getchar();
while (c !=EOF)
{
putchar(c);
c=getchar();
}
}


a)Copiare stdin su stdout fino ad EOF escluso e poi terminare.
b)Copiare stdin su stdout fino ad EOF incluso e poi terminare
c)Copiare stdin su stdout fino ad EOF escluso senza però terminare



main()
{
char c
while ((c=getchar()) !=EOF)
putchar(c);
}


a)Copiare stdin su stdout fino ad EOF escluso e poi terminare.
b)Copiare stdin su stdout fino ad EOF incluso e poi terminare
c)Copiare stdin su stdout fino ad EOF escluso senza però terminare


IO ho provato a compilarli entrambi ma apparentemente mi danno lo stesso output,prendono tutto quello che sta su stdin e lo mettono su stdout;
se qualcuno oltra la soluzione sa dirmi anche brevemente il perchè è meglio!grazie ;)

pixer
05-09-2003, 10:23
a)Copiare stdin su stdout fino ad EOF escluso e poi terminare.
b)Copiare stdin su stdout fino ad EOF incluso e poi terminare
c)Copiare stdin su stdout fino ad EOF escluso senza però terminare e che vuol dire? :dottò:

}gu|do[z]{®©
05-09-2003, 10:29
Originariamente inviato da pixer
e che vuol dire? :dottò:
incluso/eslucluso vuol dire: "quando trova EOF cicla ancora o salta subito?"

mi sa che è un esercizio di quelli tipo differenza tra while e do...while in PHP :fagiano:

A rigor di logica il while si interrompe appena la codizione diventa false.. quindi appena trova EOF non entra + nel ciclo.. perciò scarterei la b... perà non capisco quel "terminare" .. guardando il secondo invece in cui putchar è fuori dal ciclo.... deduco che quell'ultimo putchar viene eseguito anche quando viene trovato EOF.. quindi, senza sapere molto di c, penso che sia quella la "terminazione" :dottò:

Perciò nel primo c e nel secondo a

qualcuno confermi o smentisca :fagiano:

}gu|do[z]{®©
05-09-2003, 10:34
avevo letto male il secondo :fagiano:

Adesso ho capito:

nel primo getchar viene effettuato dentro il ciclo.. quindi EOF è INCLUSO

nel secondo getchar viene chiamato nella condizione.. quindi è escluso :fagiano:

}gu|do[z]{®©
05-09-2003, 10:38
Originariamente inviato da }gu|do[z]{®©

nel primo getchar viene effettuato dentro il ciclo.. quindi EOF è INCLUSO


hum... però ho riletto e ho visto che putchar è chiamato prima.. quindi EOF non è incluso nella copia.... la differenza cmq è quella.. nel primo EOF viene letto DENTRO il ciclo che quindi termina all'iterazione successiva.... nel secondo viene letto NELLA CONDIZIONE DEL CICLO che quindi termina immediatamente.... poi bisogna interpretare le domande :stordita:

ma mi pare di capire che in entrambi i casi EOF non viene copiato... :fagiano:

pixer
05-09-2003, 10:44
guido... EOF viene interpretato come "fine".. :dottò:

}gu|do[z]{®©
05-09-2003, 10:45
Originariamente inviato da pixer
guido... EOF viene interpretato come "fine".. :dottò:

hem.. sì lo so.. ma è un carattere speciale cmq no? :dottò:

pixer
05-09-2003, 10:48
Originariamente inviato da }gu|do[z]{®©
hem.. sì lo so.. ma è un carattere speciale cmq no? :dottò: si :dottò:

}gu|do[z]{®©
05-09-2003, 10:52
Originariamente inviato da pixer
si :dottò:

e viene copiato o no? non viene copiato perchè il ciclo si ferma alla sua lettura... no? quindi è escluso! Sul terminare bisognerebbe capire che cacchio vuol dire :master:

Loading