Co$t@ntino
2007-11-24 14:37:51 UTC
Ciao a tutti,
È un po' di tempo che sto cercando di imparare il C. Mentre tentavo di
fare un programmino con dei cicli for ho notato una strana anomalia in
scanf. In poche parole le prime due istruzioni funzionano correttamente,
ma l'ultima viene saltata. Ecco il pezzo di codice incriminato:
#include <stdio.h>
int main(void)
{
int numero1,numero2;
char carattere;
printf("Inserisci un numero: ");
scanf("%d",&numero1);
printf("Inserisci un altro numero: ");
scanf("%d",&numero2);
printf("Inserisci un carattere: ");
scanf("%c",&carattere); //Istruzione che viene saltata
printf("Carattere: %c\n",carattere);
return 0;
}
Ed ecco l'output che mostra in shell:
$ cc prova.c -Wall
$ ./a.out
Inserisci un numero: 3
Inserisci un altro numero: 4
Inserisci un carattere: Carattere:
Compilato usando gcc 4.1.2 su Debian Sid. GNU Emacs come editor.
Ho provato anche con "carattere = getchar" ma non funziona. Invece
usando %s come formattatore di campo nello scanf sembra andare, ma alla
fine mi da un errore di segmentazione: segmentation fault (core dumped).
Cos'è che non funziona?
Ciao, Costantino
--
Linux non è un sistema operativo, ma un modo diverso per affrontare la
propria esistenza.
http://linuxrevenge.wordpress.com/
Powered by:
_____ _ _ _____ _ _
| __ \ | | (_) / ____(_) | |
| | | | ___| |__ _ __ _ _ __ | (___ _ __| |
| | | |/ _ \ '_ \| |/ _` | '_ \ \___ \| |/ _` |
| |__| | __/ |_) | | (_| | | | | ____) | | (_| |
|_____/ \___|_.__/|_|\__,_|_| |_| |_____/|_|\__,_|
linux 2.6.23.1-handmaded
È un po' di tempo che sto cercando di imparare il C. Mentre tentavo di
fare un programmino con dei cicli for ho notato una strana anomalia in
scanf. In poche parole le prime due istruzioni funzionano correttamente,
ma l'ultima viene saltata. Ecco il pezzo di codice incriminato:
#include <stdio.h>
int main(void)
{
int numero1,numero2;
char carattere;
printf("Inserisci un numero: ");
scanf("%d",&numero1);
printf("Inserisci un altro numero: ");
scanf("%d",&numero2);
printf("Inserisci un carattere: ");
scanf("%c",&carattere); //Istruzione che viene saltata
printf("Carattere: %c\n",carattere);
return 0;
}
Ed ecco l'output che mostra in shell:
$ cc prova.c -Wall
$ ./a.out
Inserisci un numero: 3
Inserisci un altro numero: 4
Inserisci un carattere: Carattere:
Compilato usando gcc 4.1.2 su Debian Sid. GNU Emacs come editor.
Ho provato anche con "carattere = getchar" ma non funziona. Invece
usando %s come formattatore di campo nello scanf sembra andare, ma alla
fine mi da un errore di segmentazione: segmentation fault (core dumped).
Cos'è che non funziona?
Ciao, Costantino
--
Linux non è un sistema operativo, ma un modo diverso per affrontare la
propria esistenza.
http://linuxrevenge.wordpress.com/
Powered by:
_____ _ _ _____ _ _
| __ \ | | (_) / ____(_) | |
| | | | ___| |__ _ __ _ _ __ | (___ _ __| |
| | | |/ _ \ '_ \| |/ _` | '_ \ \___ \| |/ _` |
| |__| | __/ |_) | | (_| | | | | ____) | | (_| |
|_____/ \___|_.__/|_|\__,_|_| |_| |_____/|_|\__,_|
linux 2.6.23.1-handmaded