問題タブ [strtok]

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 投票する
5 に答える
6557 参照

c - Cのstrtok()および読み取り専用文字列リテラル

char * strtok(char * s1、const char * s2)

この関数を繰り返し呼び出すと、文字列s1が「トークン」に分割されます。つまり、文字列はサブ文字列に分割され、それぞれが「\ 0」で終了します。ここで、「\0」は文字列s2に含まれるすべての文字を置き換えます。最初の呼び出しでは、s1としてトークン化される文字列を使用します。以降の呼び出しでは、最初の引数としてNULLが使用されます。現在のトークンの先頭へのポインタが返されます。トークンがなくなると、NULLが返されます。

やあ、

私は今使用しようとしていますが、strtokに渡すとセグメンテーション違反が発生することがわかりました。を渡すと、正常に動作します。char*s1char[]strtok

どうしてこれなの?

char*私はグーグルで検索しましたが、その理由は、読み取り専用でchar[]書き込み可能である方法に関するもののようです。より徹底的な説明をいただければ幸いです。

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

c++ - strtokとC++の部分文字列を置き換えます

文字列「12233456」がある場合

「\x12\ x23 \ x34 \ x56」に変更する最も簡単な方法は何ですか?

0 投票する
13 に答える
139340 参照

c++ - std::stringでstrtokを使用する

トークン化したい文字列があります。しかし、Cstrtok()関数では、文字列が。である必要がありchar*ます。どうすればこれを簡単に行うことができますか?

私は試した:

に変わるので失敗しconst char*ますchar*

0 投票する
7 に答える
9633 参照

c - strtok の代替手段を開発しました

独自のバージョンの strtok を開発しました。ポインターの使用を練習するだけです。

誰でもこれで制限を見ることができますか、とにかく私は改善できます.

0 投票する
4 に答える
1103 参照

c - strtok と関数呼び出し

私はこの非常に奇妙な振る舞いをしています:

以下のコードでは: MyLogger への呼び出しにコメントを付けると、sTempNr がトークン化され、4 つのトークンが表示されるというすべてが正常に機能します。しかし、ログ記録のために MyLogger への呼び出しのコメントを外すと、反復は 1 回だけ行われ、以下のような同様のコードを持つ他のテスト クラスでは、冗長な情報が MyLogger に送信されて 4 回以上ループが発生します。

そのため、Purify ツールを使用して、MyLogger にメモリの問題があるかどうかを確認しました。見つかりませんでした。MyLogger は vaargs を使用して引数を抽出し、vfprintf を呼び出して印刷します。

このコードをさらにデバッグする方法がわかりません。任意のガイダンスをいただければ幸いです!.

0 投票する
4 に答える
3194 参照

c - C-strtokおよびstrcmp

strtokとstrcmpの使用に少し問題があります。

次のヘッダーを付けると

私はこの出力を取得します:

ご覧のとおり、strtok()は文字列を適切に解析しますが、値c1とc2は意味をなさないようです(c1は0を返す必要がありますが、代わりに1を返します)。

何が起きてる?

0 投票する
4 に答える
21054 参照

c - strtok とメモリ リーク

strtok() を使用して簡単な URL パーサーを作成しました。ここにコードがあります

ご覧のとおり、私は strtok() をよく使うので、URL を「スライス」できます。http や https 以外の URL をサポートする必要はないので、この方法ですべての問題が解決します。私の懸念は(これは組み込みデバイスで実行されています)-メモリを無駄にしていますか?のようなものを書くとき

そして、後で呼び出します

最初に保持されたポインタ ret->protocol はメモリに残りますか? 最初の呼び出しを tmp ポインターに設定し、ret->protocol を文字列の右側の部分に指定して strtok を呼び出し (2 番目の呼び出し)、次に free(tmp) を呼び出す必要があるのではないかと考えました。

strtok を使用する最良の方法は何ですか?

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

c - Cのネストされたループでstrtok()を使用しますか?

ネストされたループで使用しようとしてstrtok()いますが、同じメモリ位置を使用している可能性があるため、望ましい結果が得られません。私のコードは次の形式です:-

0 投票する
10 に答える
8190 参照

c++ - C++ 文字列を char* に変換する方法

strtok_s で使用するために文字列を char * に変換する必要があり、それを理解できませんでした。c_str() は、互換性のない const char * に変換されます。

また、2 番目の strtok_s 関数 (ループ内) が必要な理由を誰かが説明できれば、非常に役立ちます。たとえば、ファイルの各行を連続して暗黙的にフェッチする while ループではなく、トークンを明示的に進める必要があるのはなぜですか。

関連する質問