Cの( )int
から解析したい。組み込みLinux用のLinuxカーネルモジュールを書いている。ここで見つけたものを使おうとしています。string
char*
simple_strtol
理想的な状況で解析しているトークンは数字になります。私が抱えている問題"0"
は、有効な入力です。値を解析できなかった場合にstrtol
戻ります(エラー)。0
つまり、次のコードを意味します。
char* token = "should_fail";
char **endptr;
char value = simple_strtol(token, endptr, 10); // 10 is the base to convert to
if (!**endptr){
printf("failed!");
} else {
printf(value);
}
char* token = "0"; // should pass
char **endptr;
char value = simple_strtol(token, endptr, 10); // 10 is the base to convert to
if (!**endptr){
printf("failed!");
} else {
printf(value);
}
0
最初のケースで失敗するはずの両方のケースで印刷されます。*endptr
その引数を使用して、変換が成功したかどうかを確認しようとしていますが、機能していません。私が調査したところによると、*endptr
「解析された文字列の末尾へのポインタがここに配置されます」です。そして、変換が失敗した場合、ポインターは何も指さないので、その失敗を識別できると思います。
失敗した解析を識別し、それを返さないようにしながら"0"
、適切に解析しての戻り値を取得する方法を誰かが知っていますか?0
0