HackerNews

C言語における整数の解析

Parsing Integers in C

https://daniel.haxx.se/blog/2025/11/13/parsing-integers-in-c/


C言語には、ASCII数値を整数に変換するための多くの標準関数が用意されていますが、これらはエラーに対する対応が不十分であり、誤って0を返すなどの問題があります。特に、atoi()やatol()は数値の範囲を正確に扱えず、異なるプラットフォームでの動作も一貫しません。これに対して、strtol()などの関数はオーバーフロー検出やエラー処理が可能ですが、依然としてホワイトスペースや符号を無視することがあるため注意が必要です。curlプロジェクトでは、データの厳密な解析を重視し、curlx_str_number()という独自のパーサーを導入しました。この関数は64ビット整数を正確に解析し、エラー処理を行います。最近、curlソースコードからこれらの弱い関数が全て削除され、より安全で堅牢なコードが実現されました。