いくつかの文字を数値型に変換しようとしていますが、そのうちのいくつかはNULLで終了する文字列ではないかもしれません。 strtol、strtoll、strtodはnullで終了していない文字列に対して安全ですか?は、すべての文字に対してstrtol、strtoll、strtodが安全です。
6
A
答えて
5
号
それは文字列ない文字配列は、その後、ヌル文字で終了していない場合。 strto*()
関数のいずれかに文字列を指さない引数が渡された場合、その動作は未定義です。最初のヌルを含む
文字列がで終了した文字の連続配列があると :用語の
7.1.1定義:2011 ISO C標準のlatest draftを参照
キャラクター。ライブラリ関数の
7.1.4用途:関数の引数は、そのような機能のドメイン外の値 、またはアドレス 外部ポインタとして無効な値を有する(場合
(対応するパラメータが const修飾されていない場合)、または 関数が可変数の引数を持つ関数によって期待されない型(昇格後)のいずれかである場合、動作は未定義です。
7.22.1.3にstrtod、strtof、及びstrtold機能は:
にstrtod、 strtof 、そしてstrtold関数は、文字列の最初の部分 変換
nptr〜ダブル、 float,long doubleの表記である。
(強調追加)
ように文字列を指していない引数は、関数の領域外にあります。
{ '1', '2', '3', 'x', 'y', 'z' }
のような配列が含まれている場合は、希望の値を終了するx
をスキャンする必要はありませんが、その動作は明示的に定義されていないため、離れてしまう可能性があります。
これらの機能を使用する場合は、必要に応じてアレイを別のバッファにコピーし、明示的にヌル終了する必要があります。
1
あなたの入力が何らかの理由で有効な桁文字でない限り、処理は停止し、最初のNULが見つかるまで幸いにメモリを読み取るべきではありません。
だから、あなたは大丈夫だと思います。
関連する問題
- 1. strtol、strtodは危険ですか?
- 2. 文字列のすべての文字に対してTrueを返します
- 3. プロガードはリバースエンジニアリングに対してどれだけ安全ですか?
- 4. すべてのJavaScriptコードとイベントを削除して文字列を安全にする
- 5. Pythonの文字列.format()は、信頼できない書式文字列に対して安全にすることはできますか?
- 6. STDにnullptrを割り当て::文字列が安全ですか?
- 7. すべてのシステムコールはリアルタイムで安全ですか?
- 8. クエリ文字列のAPIキーが安全になっていますか?
- 9. ビューアロケートでASINetworkQueueのすべてのリクエストを安全にキャンセルする
- 10. STDOUT上のsetvbufは他のプロセスに対して安全ですか?
- 11. 大量のMySQLのLIKEクエリはSql Injectionに対して安全ですか?
- 12. 私のPython Webアプリケーションはすべての文字列に対してUnicodeを使用すべきですか?
- 13. ASP.NET MVC 4 BetaのエディタテンプレートはCSRFに対して安全ですか?
- 14. は、すべての文字
- 15. ランダムなファイル名で安全なURL安全な文字列を生成する
- 16. PHP:マルチバイト文字列のimplode()関数は安全ですか?
- 17. 文字列のすべての文字はセットに属していますか?
- 18. はconfig.jsonで安全な接続文字列です
- 19. MongoDB:文書のIDを「公開」しても安全ですか?
- 20. このトリックはすべてのブラウザで安全に実行できますか?
- 21. 空の文字列をデータベース全体に対してNULLに更新する
- 22. JavaScriptの安全な文字列
- 23. 安全な文字列の比較
- 24. 安全な文字列をAndroidに保存する方法は?
- 25. HashtableのすべてをConcurrentHashmapに置き換えても安全ですか?
- 26. リフレクションを使用して安全に文字列を使用してガベージコレクションの前に内容をスクラブする
- 27. Pythonで安全な文字列に日付をシリアル化する
- 28. 安全な文字列出力
- 29. XCodeはすべての空の文字列に対して1つのオブジェクトを作成しますか?
- 30. 小文字のメールアドレスを安全に扱えますか?
たとえば、変換された数字の後に空白または句読点の文字(またはその文字が含まれていない場合は文字)がスキャンを停止します。 –
@JonathanLeffler:先頭の空白、小数点、有効な入力である可能性のあるものを除く、はい。 –
seg-faultエラーが発生しませんか? –