一个文本文件的某些行含有一个开放方括号开始的行,具有可变数目字符,随后是接近正方形支架的再一些另外的文本如何获取字符分隔的子字符串?
例如:
[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