Stavo provando ad implementare tutto in una funzione che resituisse un codice di errore se il valore non era corretto:
Ma così non funziona per niente, non aspetta neanche che inserisca un valorecodice:#include <stdio.h> #include <stdlib.h> int checkNum(); main(){ int var; var = checkNum(); printf("%d", var); scanf("%d"); } int checkNum(){ /*LEGENDA DEGLI ERRORI DI RITORNO 0 = Nessun Errore 1 = Trovati valori non numerici 2 = Problemi con l'uso del segno 3 = Problemi con l'uso del punto */ int i, c, flagErr, flagEOF, flagSign, flagPoint; flagErr = 0; flagEOF = 0; flagSign = 0; flagPoint = 0; i=0; while(c!=0 && c!=10){ c=getchar(); if(c!=10){ if((c<'0' || c>'9') && c!='-' && c!='+' && c!='.' && c!=EOF) flagErr = 1; if(c==EOF) flagEOF = 1; if(c=='+'){ flagSign++; if(i>0) flagSign++; } if(c=='-'){ flagSign++; if(i>0) flagSign++; } if(c=='.') flagPoint++; // printf("%d\n", flagEOF); } i++; } if(flagSign>1) return 2; if(flagPoint>1) return 3; if(flagErr==1) return 1; if(flagEOF==1) printf("Hai battuto \n"); }![]()
Ma come mai??

Rispondi quotando