に収まる値である必要がある 10 進数のファイルがあるとしますがint
、このファイルの内容をプログラムで検証して、オーバーフローをチェックしたいとします。数字のいずれかが整数をオーバーフローするかどうかを確認する簡単な方法はありますか?
元。ファイル -
name: test.txt
value: 4343214321423142314
ループして実行fscanf(fd, "%d", &myint)
すると、成功したことを示すメッセージが返されますが、myint に格納されている数値は正しくありません。
同様に、それを文字配列に読み込んでfscanf(fd, "%s", &mystr)
やみくもに呼び出すatoi(mystr)
と、成功は返されますが、結果は正しくありません。
それを文字列に読み込む 2 番目の例を考えると、次のようなことが可能になります。
char buf[11] = {'\0'};
sprintf(buf, "%d", INT_MAX);
fscanf(fd, "%s", &mystr);
if(strcmp(mystr, buf) > 0)
// handle error case
しかし、追加の配列と文字列比較関数を必要とせずにこれを行う簡単な方法はありますか?