問題タブ [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.

0 投票する
1 に答える
527 参照

llvm - LLVM アセンブリ コードで文字列を long に変換する

LLVM アセンブリ コードで文字列を整数に変換しようとしています。コードは atoi で問題なく動作しますが、strtol に切り替えたいと考えています。

これはコードです:

これで、debug printf メッセージに 0 が出力されます。endptr の受け渡しに何か問題があると思います。私は何を間違っていますか?

0 投票する
1 に答える
2039 参照

c - 割り込み駆動型 UART でのフロー処理 - ATMEGA328P

ATMEGA328P で割り込み駆動の UART 通信を実装しようとしています。私が達成する必要があるのは、UART 経由でコマンド (char 配列) を送信して、mainルーチン内の変数に値を抽出し、回路内の動作をプログラムできるようにすることです。

送信するデータの形式は次2 255 0 255 0 0 255 1000のとおりです: (RGB LED ランプ用です) 、RGB 2 色、およびlong intの値を記述します。modeduration

これまでのところ、これは私が持っているものですmain:

そして、受信を処理する ISR (割り込みサービス ルーチン):

ご覧のとおり\0、ストリームの最後に を検出した場合にのみ、変数の値を更新しようとしています。

それは(ISRで)のようなものです:

  • 着信バイトを読み取り、長さが最大 ​​80 バイトのバッファーに格納します。
  • が入ってきたら、\0処理する新しいデータがあることを main に知らせます

main

  • 新しいデータがある場合は、バッファを分割long intして値を保存します
  • 新しいデータ フラグをクリアする
  • 新しい価値観に従って行動する。

問題は、これが私が望んでいたように展開されておらず、ちょっと迷っていることです. switch変数が正しい値を持っている場合、ステートメントが正しく機能することはわかっています。問題を、通信/バッファの入力フェーズが壊れているか、変数の値の抽出が壊れているかのいずれかに絞り込みましたが、どちらか、または両方かはわかりません。

誰でも洞察を共有できますか?

0 投票する
1 に答える
489 参照

c - strtol による 16 進数 (str) の解釈

00:11:22:33:44:556 バイナリ バイト、つまり 0x00、0x11、0x22、0x33、0x44、0x55 のようにフォーマットされた mac 文字列を解釈したいと思います。私は次のコードでこれを達成しようとしました:

しかし、私が得た結果は正しく見えません:

なぜ最後のバイトが正しく解釈されないのか疑問に思っています。ありがとう

0 投票する
1 に答える
3515 参照

c - strtol() を使用して文字列から int に変換: \0' または '\n'?

string から int への変換に疑問があります。関数 fgets を介して文字列を取得し、strtol 関数を使用してそれを int に変換しました。これはコードです:

このコードは機能しませんが、このコントロールを置き換えると機能します

これで:

なぜなのかご存知ですか ?:)

編集:これは私の最終的な機能バージョンのコードです:)すべてに感謝します:)今、すべてが正しく機能しているようです:

0 投票する
1 に答える
297 参照

c - MAC アドレスを解析し、temp を移動する際の strtol() のチェックでエラーが発生しました。ポインターアップ

を使用して、MAC アドレスを形式00:11:22:33:44:55から 6 バイト配列に変換する関数がありますstrtol()。現在、私の関数は基本的に正常に動作していますが、最初の変換を過ぎて適切なエラーチェックを行う方法を知りたいです。これまでのところ、私のコードは次のようになります。

その後の手順で、残りの文字列を元の文字列に実際に変換できます。一時的な配列を使用するのが最善char pEnd[6]ですか?

0 投票する
3 に答える
12531 参照

c++ - atoi の null は値を 0 に変換します

私のプログラムには、データを抽出して整数変数(値)に格納する必要があるchar配列(char data[])があります。そのために、プログラムで atoi を使用しました。問題は、char配列(データ)でnullを受け取ることがあることです。この値にatoiを使用すると、(null)の代わりに整数変数で値0が得られます

実際の関数は非常に大きく、ここにコード全体を掲載することはできません。以下で説明する機能から、私がここで何をしているのか、皆さんが少しでも理解してくれることを願っています。

私は最近、atoi の代わりに strtol を使用する必要があることを読みました。私もそれを試しました。しかし、私はまだ変数値に0を取得しています。

整数変数値で (null) を取得するには、どの関数を使用すればよいか知りたいですか?

null とは、ここでは空の文字配列を意味します

問題に固有の解決策を提供してください。上記の関数で、データが空の char 値を取得した場合、int 変数の値もゼロではなく空の値になるようにするにはどうすればよいですか??

0 投票する
1 に答える
69 参照

crash - appcrash の原因となる Strtol および Glib バッファー

g_io_channel_read_chars メソッドを使用して TCP ソケットから読み取ったデータを取得し、それを長整数に変換しようとしています。ScanLine を gchar ポインターとしてキャストせず、ScanLine[0] を使用して ScanLine の最初の変数にアクセスし、さまざまな方法で FilterAmount を宣言しているにもかかわらず、strtol、atoi を使用してみましたが、それでもその行でアプリがクラッシュします。何か案は?

printfステートメントの出力は「2」です

0 投票する
2 に答える
3913 参照

c - strtol ヘルプ なぜ 0 を返すのですか

そのため、組み込みstrtolが0を返す理由について混乱しています。マニュアルから、変換が不可能な場合は0を返すと書かれています。あまりにも私ですが、適切に変換する必要があります。これが関数です。

これは、コインの金種とコインの数を表す long 整数を返します。これらは、coin 型の構造体に格納されます。次のものがありますtypedef

読み込まれるファイルの形式は次のとおりです。 最初の列は金種で、2 番目の列はカウントです。

区切り文字はコンマです。特に strtol を使用するように指示された場合は、それ以外の場合は を使用しますstrtok_r