一個文本文件的某些行含有一個開放方括號開始的行,具有可變數目字符,隨後是接近正方形支架的再一些另外的文本如何獲取字符分隔的子字符串?
例如:
[ABC] why is the sky green?
[DEFG] Ou sont les Niegedens d'antan?
[I can't code C] (... obviously)
如何獲得方括號之間的文本? (我想printf
it)
一個文本文件的某些行含有一個開放方括號開始的行,具有可變數目字符,隨後是接近正方形支架的再一些另外的文本如何獲取字符分隔的子字符串?
例如:
[ABC] why is the sky green?
[DEFG] Ou sont les Niegedens d'antan?
[I can't code C] (... obviously)
如何獲得方括號之間的文本? (我想printf
it)
最簡單的方法可能會是一個掃描集轉換:
char line[256];
while (fgets(line, sizeof(line), stdin)) {
char string[256];
sscanf(line, "[%255[^]]", string);
printf("%s\n", string);
}
一行一行地讀取,比較第一個字符與[
,並使用strchr
來查找結束方括號]
。
對於任意長的行,您可以使用fgets
讀入臨時緩衝區,並檢查行終止符以避免意外捕獲行中間括號中的文本。要打印出來,您可能需要隨時打印(並在到達下一行或遇到]
時停止),或將其緩衝在您自己的字符串生成器實現中。
+1和答案。 Althoug我懷疑你的意思是sscanf(line,「[%255 [^]]」,string); – Mawg 2012-07-11 03:36:08
@Mawg:哎呀 - 挺對的。謝謝。 – 2012-07-11 03:37:10