ああん、ところでatolは符号つきなので、40億をパースするにはsscanfの%luじゃないとダメなんすね。
ま、上記コードで計算させると1000万番目で20秒かかるので、40億だと恐ろしいことになると思われる。