Manugal
21-04-2005, 15:05
Ciao a tutti :)
Ho due dubbi su questo programma C. Vi posto il codice:
/* Stampa una riga al contrario */
#include <stdio.h>
void wrt_it(void);
int main(void){
printf("Input a line: ");
wrt_it();
printf("\n\n");
return 0;
}
void wrt_it(void){
int c;
if ((c=getchar())!='\n')
wrt_it();
putchar(c);
}
1) Se la funzione ricorsiva wrt_it non riceve alcun parametro, come fa a leggere quello che scrivo su printf se neanche lo memorizzo in un'array ad esempio?
2) Non capisco bene quello che fa la funziona wrt_it. Cioè legge i caratteri fino a che non incontra newline (proprio perché viene chiamata ricorsivamente wrt_it), però una volta che incontra '\n', la chiamata putchar(c) come fa a stampare tutto al contrario. Cioè secondo me stamperebbe solo il newline (che è il valore attuale di c); come fa ad andare al contrario?
Grazie a chi mi risponderà ;)
Ho due dubbi su questo programma C. Vi posto il codice:
/* Stampa una riga al contrario */
#include <stdio.h>
void wrt_it(void);
int main(void){
printf("Input a line: ");
wrt_it();
printf("\n\n");
return 0;
}
void wrt_it(void){
int c;
if ((c=getchar())!='\n')
wrt_it();
putchar(c);
}
1) Se la funzione ricorsiva wrt_it non riceve alcun parametro, come fa a leggere quello che scrivo su printf se neanche lo memorizzo in un'array ad esempio?
2) Non capisco bene quello che fa la funziona wrt_it. Cioè legge i caratteri fino a che non incontra newline (proprio perché viene chiamata ricorsivamente wrt_it), però una volta che incontra '\n', la chiamata putchar(c) come fa a stampare tutto al contrario. Cioè secondo me stamperebbe solo il newline (che è il valore attuale di c); come fa ad andare al contrario?
Grazie a chi mi risponderà ;)