問題タブ [strtol]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - strtol などの仕様における紛らわしい言語
の仕様でstrtol
は、入力文字列を「最初の空白」、「サブジェクト シーケンス」、および「最終文字列」に概念的に分割し、「サブジェクト シーケンス」を次のように定義しています。
入力文字列の最長の最初のサブシーケンスで、予期される形式の最初の非空白文字で始まります。入力文字列が空であるか、完全に空白文字で構成されている場合、または最初の非空白文字が記号または許容される文字または数字以外である場合、サブジェクト シーケンスには文字が含まれません。
かつて、「最長の最初のサブシーケンス」ビジネスは、失敗した一致としてスキャンし、次の未読文字としてスキャンする方法に似てscanf
いると考えていました。ただし、いくつかの議論の後、予想される形式の可能な文字列の最初の部分シーケンスである最長の初期文字列ではなく、予想される形式である最長の最初の部分シーケンスを処理することがほぼ確信しています。"0x@"
"0x"
"@"
strtol
まだ私を混乱させているのは、仕様の次の言語です。
サブジェクト シーケンスが空であるか、期待される形式を持たない場合、変換は実行されません。endptr が NULL ポインターでない場合、str の値は endptr が指すオブジェクトに格納されます。
「サブジェクト シーケンス」の正しい定義であると思われるものを受け入れる場合、期待される形式を持たない空でないサブジェクト シーケンスなどは存在せず、代わりに (冗長性と混乱を避けるために) テキストは単に読む必要があります。 :
サブジェクト シーケンスが空の場合、変換は実行されません。endptr が NULL ポインターでない場合、str の値は endptr が指すオブジェクトに格納されます。
誰かが私のためにこれらの問題を明確にすることができますか? おそらく、過去の議論や関連する欠陥レポートへのリンクが役立つでしょう。
c - strtol が整数オーバーフローを検出しない
以下のコードを使用して、strtol を使用して文字配列を整数に変換しようとしています。
ここで、temp = 4000000010
ただし、strtol はオーバーフローを検出せず、foo を LONG_MAX に設定せず、errno を初期値の 0 から変更しません。
代わりに、bob は -294967286 のオーバーフロー値に変更されます。
だから私はここで何が欠けているのだろうと思っていましたか?
c - strtol が期待どおりに動作しない c
上記のコードに {'1','2','3','4','5','6','7','8','9','0 の入力配列が与えられた場合','1'}
私は次の出力を取得します:
何が起こっているのか... strtolはオーバーフローに苦しんでいるようですが、errnoを設定していません
c# - C#でオプションのフィールドを使用してカスタムDateTime形式を手動で解析するにはどうすればよいですか
社内のほとんど ISO に似た形式で次の日付/時刻があるとします。
"2011-11-07T11:17"
"--T11:17"
(午前11時17分、日付なし、時間のみ)"-11-07"
(11月7日、年なし、時間なし)
区切り記号は必須であり、データが存在するかどうかを知ることができます。データは次のような構造に設定されます。
「最も簡単な」方法は、文字ごとにループし、存在する場合はデータを抽出することです。
しかし、整数などを抽出し、整数以外の最初の文字のインデックスを返す (C の に似た) 何らかの API が必要だというしつこい印象がありますstrtol
。
strtol
文字列を文字ごとに解析する代わりに、C# のような関数、または型指定されたデータを抽出するためのより高レベルの関数はありますか?
c - エラー C3861: 'strtoll': 識別子が見つかりません
ここで直面している主な問題はstrtoll()
、VC 2010 でエラーとしてフラグが立てられることです ( error C3861: 'strtoll': identifier not found
)。に置き換えても同じことになりstrtol()
ますか?
c++ - この strtol と strtok の組み合わせが機能しないのはなぜですか?
このコードの何が問題なのか誰か教えてもらえますか?
Solaris Unix で実行しています。それは私にセグメンテーション違反を与えています。
障害は にありstrtol()
ます。
iphone - 16 進文字列を int に変換するときの奇妙な結果
次のメソッドをコーディングして、Hex String を int に変換しました。
ほとんどの場合、正常に動作しますが、次のような大きな問題が発生することがあります。
私のコードの何が問題なのか誰か教えてもらえますか?
c - ifステートメントのcharを比較する文字列ホイストの代わりにcharでstrtolを使用する方法
私はcチュートリアルを読んで、このコードを正しくコンパイル/動作させるために多くの時間を費やしました(cを吸うように)、そしてstrtolを使用する代わりに、よりクリーンでクリーンな方法が何であるかを知りgetchar(c)
たいc
です配列chstr[]
を使用strtol
しchstr
ます。
isdigitチェックを手伝ってくれたLachlanpsに感謝します
c++ - Strtolの2番目の引数
2番目の議論はどのように機能しstrtol
ますか?
これが私が試したことです:
ここptr
で、char *
はstr
文字列です。さて、として渡して印刷str
すると'34EF'
、*ptr
正しく表示され、出力されますが、印刷すると、16進アドレスなどのごみの値になるだけではいけませんか?E
*(ptr+1)
F
ptr
EF!
ptr
c - Cでのstrtol()による奇妙なクラッシュ
stdlibライブラリのstrtol()を使用していくつかの証明を作成していました。これは、常にクラッシュするプログラムがあり、これが完全に機能することがわかったためです。
しかし、このようにクラッシュした場所に関係なく、新しい宣言を追加しただけです
その最後の「intk;」を追加するだけです。strtol()の実行時にプログラムがクラッシュした理由を理解できません。私はCode::Blocksでこれを行っています