問題タブ [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 - C 警告: 'strcpy' の引数 2 を渡すと、キャストなしで整数からポインターが作成されます
説明:
単にaa charを16進数に変換しようとしていますが、このエラーが発生し続け、これを回避する方法がわかりません
問題:
コード:
c - Cの文字列からさまざまな整数を抽出する方法は?
文字列からさまざまな数値を抽出する方法を考えていました。strtol が機能することは理解していますが、最初の桁でしか機能しないようです。
これが私のコードです
この例では、v1 = 16 と v2 = 23 を出力したいと思います。
別の例として、str が「12,23,34」の場合、v3= 34 が必要です
前もって感謝します :)
c - 文字列の整数表現を出力するときの Scanf と strtol のプロパティ
文字列は、隣接するメモリアドレスを持つ単なる文字の配列であることを知っています。したがって、文字配列がある場合:
s[1] の文字配列を "5" に変更すると、そのような配列を出力すると "15345" が返されます。今私の質問は scanf と strtol 関数についてです。異なるサイズの文字列を使用して scanf を 2 回使用して配列 s に値を挿入すると、strtol 関数が配列全体を変換しないのはなぜですか?
例として私のコードを次に示します。
次のユーザー入力を想像してみてください。
プログラムは「サイズは10000です」と出力します
次に、ユーザーは次のように入力します。
次に、プログラムは「サイズは100です」と出力します
「サイズは1000です」と再び出力されないのはなぜですか?最初の入力からのバイトの残りの配列要素は変更されず、strtol は配列の残りの部分を正しく変換する必要がありますか?
私の考えでは、プログラムが 10000 の最初の入力をバイト配列に格納すると、その瞬間は次のようになります。
バイト = {1,0,0,0,0}
次に、ユーザーが 100 を入力すると、最初の 3 つの要素の値のみが変更され、配列の残りの部分は同じままであるため、配列は同じように見えます。
バイト = {1,0,0,0,0}
その strtol を使用すると、配列全体が 10000 に変換されますよね?
scanf は、値を同じメモリ アドレスに格納するときに、配列の残りの部分を本質的に「空」にしますか?
c - C Strtol を使用して文字列を 2 つの整数に解析する
文字列から 2 つの整数を乗算した結果を計算するプログラムがあるとします。strtol を使用して最初の部分を分離していますが、2 番目の int を分離するにはどうすればよいですか? たとえば、「12 5」は 60 という結果になります。
今私のコードは次のようになります:
したがって、文字列の最初の部分のみを整数に変換しただけなので、明らかに今はエラーになります。残りの文字列を整数に変換するにはどうすればよいですか? 別の strtol 行が必要ですか? キャストする必要がありますか?これについてどうすればよいかわかりません。
c - strtol は errno を変更しません
形式で時間を表す char 配列を指定して計算を実行するプログラムに取り組んでいますHH:MM:SS
。個々の時間単位を解析する必要があります。これは、時間だけに焦点を当てた、私のコードの短縮バージョンです。
問題は、入力が無効な場合 (たとえばaa:13:13
)、に更新されstrtol()
ていないために明らかにエラーを検出しないため、エラー処理を行うことができないことです。私は何を間違えていますか?errno
1
c - 後戻り値
アトイについて質問です。atoi を使用して文字を数値に変換できるかどうかを確認しようとしていますが、数値が 0 の場合、どうすれば回避できますか? atoi が失敗した場合は 0 を返しますが、機能した場合は数値の値も返すことを理解しています。この場合、0 は両方のカテゴリに該当します。
代わりに strtol を使用する場合、配列内の文字が >= ~ 0 であるか、存在しないか、まったく存在しないかを確認する方法はありますか。
たとえば、動的配列が {1 40 500} で構成されていて、位置 8 (範囲外) で strtol を試行した場合、NULL または atoi/strtol が失敗したことを示す何らかの指示を返したいと考えています。
c++ - strtol でカスタムの「分割文字」を使用できますか
ここでstrtol に関するいくつかのドキュメントを読んでい
ます。この例では、新しい数字が始まるときにスペースを使用してこの機能を示しています。私は C++ を初めて使用し、ポインターとそのしくみについてはまだよく知らないので、それについて質問することにしました。スペースの代わりにドットを使用して数字を分割できますか? たとえば、これを持っていて、char text[] = "3.16.88"
それを this のような 3 つの異なる変数に変換したい場合a = 3, b = 16, c = 88
、まだ strtol を使用できますか、それとも別の方法を試す必要がありますか? ありがとう