PDA

View Full Version : [C] - K&R - Esercizio 1.9 su getchar - putchar


norman900
23-06-2005, 12:54
ciao,
mi sono arenato in questo esercizio, e dopo inquantificabili tentativi ho gettato la resa.

Si scriva un programma i cui dati in uscita replichino i dati in entrata, sostituendo però un stringa di uno o più spazi con uno spazio singolo.

il mio ultimo abbozzo di "codice" è il seguente:

#include <stdio.h>


main()

{

int c, ns, out;

ns = 0;
c = getchar();
out = putchar(c);
while (c != EOF) {
if (c == ' ')
++ns;
if (ns > 1)
out == '0';
putchar(c);
}

}

So chè è colmo d'errori( quali? :D ), ma sono ancora al primo capitolo e il k&r è molto esplicito sul conteggio dei caratteri e la stampa dei calcoli, ma un po' meno sull'output di caratteri .....

Gica78R
31-08-2005, 17:39
ciao,
mi sono arenato in questo esercizio, e dopo inquantificabili tentativi ho gettato la resa.

Si scriva un programma i cui dati in uscita replichino i dati in entrata, sostituendo però un stringa di uno o più spazi con uno spazio singolo.

il mio ultimo abbozzo di "codice" è il seguente:

#include <stdio.h>


main()

{

int c, ns, out;

ns = 0;
c = getchar();
out = putchar(c);
while (c != EOF) {
if (c == ' ')
++ns;
if (ns > 1)
out == '0';
putchar(c);
}

}

So chè è colmo d'errori( quali? :D ), ma sono ancora al primo capitolo e il k&r è molto esplicito sul conteggio dei caratteri e la stampa dei calcoli, ma un po' meno sull'output di caratteri .....
Ehm... scusa... quel out=='0'; a cosa dovrebbe servire?

Cmq il thread e' vecchio, magari hai gia' risolto :)

Senza che ne apra uno nuovo, visto che siamo in tema di K&R, volevo chedere una cosa (che magari e' stupida): molti programmi e funzioni riportati nel primo capitolo riportano dei cicli di lettura carattere per carattere del tipo

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

dove la getchar() legge un dato prelevandolo dallo stdin che, salvo redirezioni, e' la tastiera.
Ora io mi chiedo: come cavolo si fa ad inserire EOF (che vale -1, almeno su Linux) dalla tastiera? :boh:

VICIUS
31-08-2005, 17:49
Per generare EOF devi premere: Ctrl+D

ciao ;)

Gica78R
31-08-2005, 17:53
Per generare EOF devi premere: Ctrl+D

ciao ;)
Oh... Grazie mille :ave: