according documentation:
strtol() öğesinin başarılı bir şekilde döndüğünden nasıl emin olabilirim? Başarı
işlevi başarısız oldu veya sadece, fonksiyon bir uzun int değeri olarak dönüştürülmüş tam sayısı verir. Geçerli bir dönüşüm gerçekleştirilemezse, sıfır değeri döndürülür. Doğru değer, gösterilebilir değerler aralığının dışındaysa, LONG_MAX veya LONG_MIN döndürülür ve global değişken errno ERANGE olarak ayarlanır.
"0"
sayı ile dize dönüştürülür ise
strtol(str, (char**)NULL, 10);
str
eğer
"0\0"
bilmek olduğunu düşünün?
dikkatinizden kaçmış 'scanf'? –
@StevenLuu: 'scanf' daha da kötü bir hata işleme özelliğine sahiptir. Bazı uygulamalar genellikle taşma üzerine çöp verir, ancak hatayı herhangi bir şekilde bildirmeden. –