如何获得字符分隔的子字符串?

时间:2012-07-11 02:55:00

标签: c string

文本文件的某些行包含以开放方括号开头的行,具有可变数量的字符,后跟一个紧密的方括号,然后是一些其他文本

例如:

 [ABC]  why is the sky green?  
 [DEFG]  Ou sont les Niegedens d'antan?  
 [I can't code C]  (... obviously)

如何获得方括号之间的文字? (我想要printf

2 个答案:

答案 0 :(得分:1)

逐行阅读,将第一个字符与[进行比较,并使用strchr找到结束的方括号]

对于任意长行,您可以使用fgets读入临时缓冲区,并检查行终止符以避免意外捕获位于行中间的括号中的文本。要打印出来,您可能希望随时打印(并在下一行或遇到]时停止),或者在您自己的字符串构建器实现中缓冲它。

答案 1 :(得分:1)

最简单的方法可能是扫描集转换:

char line[256];

while (fgets(line, sizeof(line), stdin)) {
    char string[256];

    sscanf(line, "[%255[^]]", string);
    printf("%s\n", string);
}