Quote:
Originariamente inviato da Alex 10
Si penso di avercela fatta!!!  Però lo scanf mi ha dato un sacco di problemi perchè se ad esempio inserivo al posto di un numero una lettera non mi leggeva più lo scanf perchè la lettera restava memorizzata nel buffer credo... Alla fine ho risolto distinguendo aggiungengo un carattere char in caso l'utente introducesse una lettera... Ecco:
Codice:
#include <stdio.h>
#include <stdlib.h>
int readint (int *val);
int main()
{
int dato;
if(readint(&dato)!=-1)
printf("\nIl valore inserito e' %d\n",dato);
else
printf("Hai premuto Ctrl+Z\n");
return 0;
}
int readint (int *val){
int ret,flag=0,carattere=0;
char car;
printf("Introduci un numero intero: ");
while (flag==0){
ret=0;
ret=scanf("%d",val);
if(ret<=0){
if (ret==EOF)
flag=1;
else{
ret=scanf("%c",&car);
}
}
else
printf("Letto intero: %d\n", *val);
}
return ret;
}
Mi puoi spiegare solo la parte in grassetto sottolineata? Cioè, il compilatore mi segnava errore in quel punto e sono riuscito a risolvere togliendo l'asterisco prima di val... Ma non ho capito perchè... Non si dovrebbe mettere come puntatore all'interno della funzione readint val?
|
perche nella funzione readint gli passi come parametro un puntatore ( indirizzo ) quindi nella scanf lo devi utilizzare senza *