文の最初の 2 番目と残りの部分を 3 つの変数に抽出する効率的な関数が必要です。
20657 次
3 に答える
11
簡単な方法: strtok()または strtok_r を使用して最初の 2 つのトークンを取得します。これにより、それらが文字列から削除されるため、文字列自体が探していた 3 番目のトークンになります。
難しい方法:自分で解析してください:(
Strtok は C 文字列ライブラリにあり、元の文字列を変更するので注意してください。元の文字列をそのままにしておく必要がある場合は、最初に文字列をコピーしてください。
考えられる例:
//#include <string.h>
char input[] ="first second third forth";
char delimiter[] = " ";
char *firstWord, *secondWord, *remainder, *context;
int inputLength = strlen(input);
char *inputCopy = (char*) calloc(inputLength + 1, sizeof(char));
strncpy(inputCopy, input, inputLength);
firstWord = strtok_r (inputCopy, delimiter, &context);
secondWord = strtok_r (NULL, delimiter, &context);
remainder = context;
printf("%s\n", firstWord);
printf("%s\n", secondWord);
printf("%s\n", remainder);
getchar();
free(inputCopy);
これは正常に機能し、元の文字列が変更されていない状態でスレッドセーフになるはずです。
于 2009-10-12T20:19:42.577 に答える
2
于 2009-10-12T20:16:54.483 に答える
2
最初に区切り文字を定義する必要があります。にはいくつかの問題がありますstrtok
(1 つは引数を変更することで、問題が発生する可能性があります)。私は文字列を読み込んでカスタム パーサーを実行することを好みますsscanf
。もう少し詳細を投稿してください。
于 2009-10-12T20:20:40.467 に答える