我想使用sscanf()
分隔一個長的字符串與白色空間。使用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
我試圖用C++ istringstream
替換sscanf()
,它工作正常。
是什麼讓X保持它的價值?不應該像正常流一樣從緩衝區中移除它嗎?
嘗試strtok的替代。但請注意,它不可重入。 – thang
你爲什麼要求sscanf並用C++標記它?相信我,有c專家的頭腦裏有這樣的片段,許多C++的人在「istringstream」工作時不會打擾。 – luk32
在這裏看到另一個選項[我如何在C++中標記字符串?](http://stackoverflow.com/questions/53849/how-do-i-tokenize-a-string-in-c) –