according documentation:
Come posso assicurarmi che strtol() sia ritornato correttamente?
caso di successo, la funzione restituisce il numero intero convertito come valore int lungo . Se non è possibile eseguire una conversione valida, viene restituito un valore zero . Se il valore corretto non rientra nell'intervallo dei valori rappresentabili , viene restituito LONG_MAX o LONG_MIN e la variabile globale errno è impostata su ERANGE.
consideri strtol(str, (char**)NULL, 10);
se str
è "0\0"
Come sapere se la funzione non è riuscita oppure solo ha trasformato la stringa con "0"
numero?
avete considerato 'scanf'? –
@StevenLuu: 'scanf' ha una gestione degli errori ancora peggiore. Alcune implementazioni generalmente ti danno spazzatura in overflow, ma senza segnalare l'errore in alcun modo. –