Aiuto sui linguaggi di programmazione

Area di discussione libera.

Moderatore: Staff

Regole del forum
1) Rispettare le idee altrui.
2) Evitare le offese dirette.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Vlk
Linux 3.x
Linux 3.x
Messaggi: 671
Iscritto il: mer 9 feb 2005, 0:00

Messaggio da Vlk »

Ah, finalmente ho capito. Grazie, ma il testo non era chiaro. Alla prossima.

Ecco la prossima, praticamente l'ultima cosa che devo capire da printf() e scanf(). Supponiamo che io voglia fare un programma in cui un utente scrive 2 caratteri e tre numeri interi. Do printf("Inserisci due caratteri e tre numeri interi: "); quindi nel prompt l'utente come deve scrivere i caratteri ed i numeri? Li deve far separare da uno spazio vuoto? Oppure preme invio ogni volta che inserisce un numero od un carattere?

Avatar utente
useless
Staff
Staff
Messaggi: 3896
Iscritto il: dom 12 ott 2003, 0:00
Località: A place where the streets have no name
Contatta:

Messaggio da useless »

è la stessa cosa. in generale il c riconosce come "whitespace" una qualunque combinazione di spazi, tabulazioni e "a capo". questo vale sia nei sorgenti che nel parsing di scanf. comunque il buon senso solitamente suggerisce di mettere un semplice spazio :).

Vlk
Linux 3.x
Linux 3.x
Messaggi: 671
Iscritto il: mer 9 feb 2005, 0:00

Messaggio da Vlk »

Qui in cosa sbaglio? Questo programma dovrebbe servire a far visualizzare i tre caratteri che l'utente scrive con la tastiera:

#include <stdio.h>
int main(void)
{
char c1, c2, c3;

printf("\nInserisci tre caratteri: ");
scanf("%c%c%c", &c1, &c2, &c3);
printf("Hai digitato %c%3c%3c\n\n", c1, c2, c3);
return 0;
}

p.s. vedo che giustamente questo è il forum di Slackware e che questo topic è un po' fuoriluogo. Si tiene in vita grazie a useless che risponde. Poichè non voglio abusare della sua disponibilità, vi chiedo se qualcuno studia il C ed è interessato a questo topic, altrimenti mi sposto su it.comp.lang.c oppure su forums.html.it visto che non ritengo giusto disturbarvi per ogni problema che incontro.

Avatar utente
useless
Staff
Staff
Messaggi: 3896
Iscritto il: dom 12 ott 2003, 0:00
Località: A place where the streets have no name
Contatta:

Messaggio da useless »

a parte il 3 in %3c, purtroppo è scanf che con un %c non funziona troppo bene x tutta una serie di motivi. non curartene e passa oltre, l'importante è avere capito il criterio :).

Vlk
Linux 3.x
Linux 3.x
Messaggi: 671
Iscritto il: mer 9 feb 2005, 0:00

Messaggio da Vlk »

Oddio, ma suppongo che almeno esista qualche modo, che magari imparerò alla fine del libro, per evitare questo problerma. O no?

Mi rispondo da solo. Ho letto che scanf() legge i caratteri senza saltare gli spazi vuoti. Per cui se l'utente vuole che siano visualizzati, li deve scrivere tutti attaccati. Alla prox.

Avatar utente
Sari
Linux 3.x
Linux 3.x
Messaggi: 584
Iscritto il: mer 16 feb 2005, 0:00
Slackware: 12.1
Kernel: 2.6.24
Desktop: Gnome
Località: Verona

Messaggio da Sari »

Vlk ha scritto:Qui in cosa sbaglio? Questo programma dovrebbe servire a far visualizzare i tre caratteri che l'utente scrive con la tastiera:

#include <stdio.h>
int main(void)
{
char c1, c2, c3;

printf("\nInserisci tre caratteri: ");
scanf("%c%c%c", &c1, &c2, &c3);
printf("Hai digitato %c%3c%3c\n\n", c1, c2, c3);
return 0;
}

p.s. vedo che giustamente questo è il forum di Slackware e che questo topic è un po' fuoriluogo. Si tiene in vita grazie a useless che risponde. Poichè non voglio abusare della sua disponibilità, vi chiedo se qualcuno studia il C ed è interessato a questo topic, altrimenti mi sposto su it.comp.lang.c oppure su forums.html.it visto che non ritengo giusto disturbarvi per ogni problema che incontro.
Io posso dire che sto ancora studiando il c quindi ben venga.

Avatar utente
useless
Staff
Staff
Messaggi: 3896
Iscritto il: dom 12 ott 2003, 0:00
Località: A place where the streets have no name
Contatta:

Messaggio da useless »

Vlk ha scritto:Mi rispondo da solo. Ho letto che scanf() legge i caratteri senza saltare gli spazi vuoti. Per cui se l'utente vuole che siano visualizzati, li deve scrivere tutti attaccati. Alla prox.
è solo quando usi "%c" che non vengono saltati gli spazi. ti rimando alla manpage di printf x i dettagli (tra l'altro puoi vedere comodamente i man in konqueror scrivendo come indirizzo ad esempio "#printf"). comunque x leggere singoli caratteri da tastiera è meglio usare getchar().

Avatar utente
lupix
Linux 1.x
Linux 1.x
Messaggi: 102
Iscritto il: dom 7 nov 2004, 0:00
Nome Cognome: Luciano
Località: Los Angeles

Messaggio da lupix »

useless ha scritto:
Vlk ha scritto:Mi rispondo da solo. Ho letto che scanf() legge i caratteri senza saltare gli spazi vuoti. Per cui se l'utente vuole che siano visualizzati, li deve scrivere tutti attaccati. Alla prox.
è solo quando usi "%c" che non vengono saltati gli spazi. ti rimando alla manpage di printf x i dettagli (tra l'altro puoi vedere comodamente i man in konqueror scrivendo come indirizzo ad esempio "#printf"). comunque x leggere singoli caratteri da tastiera è meglio usare getchar().
Se si gioca con getchar() e putchar()incominci a fare qualcosa di divertente...
Per esempio ti fai il tuo cat e tante altre belle cosine....ciao

Rispondi