私のCプログラムには次の問題があります。その機能の一部は、テキストを読み込んで文に分割し、その文をファイルに書き込むことです。C - Strtok()、 ' n'の文字列を分割しますが、区切り文字はそのままです
私はしかし、同じようにテキストのチャンクで\ n個の文字が含まれている文があるとき(\ nが発生したときに、文が終了)文のテキストのチャンクを分割する)(はstrtokを使用:
は、 //////////////////////////////
こんにちは、これは、これが第二の文
あるいくつかのサンプルテキストです
上記の文章は新しい行です。
これは最後の文です。
/////////////////////////////
次のようにファイルの出力は次のとおりです。
0こんにちは、これはいくつかのサンプルテキストです
1これは第2文です
2上記の文章は新しい行です
3これが最後の文です。
///////////////////////////////////////////////////////////////////////////// //////
それがされるべきである:
0こんにちは、これはこれは、第二の文
3いくつかのサンプルテキスト
1になっている上記の文章はちょうど\ nは
です4これが最後の文です。
////////////////////////////////////
すべき文字列を保持するファイルなぜなら、\ nで分割された文章中のテキストの塊を分割しなければならず、各文をファイルに書き込む前に整数を前に付けなければならないからです。
これは、この機能に関連するコードです:
int counter = 0; // Used for counting
const char s[2] = "\n"; // Used for tokenization
// ............
char *token;
token = strtok(input,s);
while(token != NULL){
fprintf(logs, "%d ", counter);
fprintf(logs, "%s\n" , token); // Add the new line character here since it is removed from the tokenization process
counter++;
token = strtok(NULL, s);
}
// .........
は「空文」(ちょうど\ n個の文字である文は)それを処理するときのための特別なケースを持ってする方法はあります正しく?
strtok()の代わりに別の関数が使用されている可能性はありますか?
私はstrtokでこれを行うことはできません。いくつかのカスタムトークン化コードを使用します。 –
strchr()strpbrk()strstr()strcspn() – joop
文字列を分割するためのカスタムコードを記述しました。レシピ:http://stackoverflow.com/questions/40196067/parse-path-variable-and-save-the-directory-names-into-an-array-of-strings/40196300#40196300 –