を使用して、長い文字列を空白で分割しようとしていますsscanf()
。
例:これを分割する必要があります
We're a happy family
の中へ
We're
a
happy
family
私は次のアプローチを試しました
char X[10000];
fgets(X, sizeof(X) - 1, stdin); // Reads the long string
if(X[strlen(X) - 1] == '\n') X[strlen(X) - 1] = '\0'; // Remove trailing newline
char token[1000];
while(sscanf(X, "%s", token) != EOF) {
printf("%s | %s\n", token, X);
}
前のコードは無限ループに入り、出力しますWe're | We're a happy family
sscanf()
C ++に置き換えてみましたがistringstream
、問題なく動作しました。
Xがその価値を維持する理由は何ですか?通常のストリームのようにバッファから削除するべきではありませんか?