c - 如何使用 sscanf 读取括号之间的字符串?

标签 c linux gcc scanf

我有一些代码读取文本文件并扫描方括号之间的单词:“[”和“]”。

当我找到以 '[' 开头的行时,我读取字符串:

line[64] = "[word]";
sscanf(line, "[%s]", resource);

printf("%s\n",resource);

==> word]

但我总是以字符串+括号结尾。如何格式化 sscanf 以仅读取末尾没有括号的字符串?

最佳答案

scanf() 读取的字符集中排除 ]:

char resource[100];
if (sscanf(line, "[%99[^]]]", resource) != 1) /* error */;

/* same as */
if (sscanf(line, "[" "%99[^]]" "]", resource) != 1) /* error */;
/*          literal   scanset   literal */

关于c - 如何使用 sscanf 读取括号之间的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9941962/

相关文章:

c - 在 C 中获取当前语言环境的字符集?

linux - 如何在 Linux 终端中按时间顺序对列表进行排序?

c++ - Eclipse CDT 使用主项目编译器设置编译静态库

c# - C 和 C# 条件语句的更简单语法

c - 分配内存时出错

c - 算法中处理小数字时出现意外段错误

linux - 使用 awk 追加到文件的特定行,保留不匹配的行不变

linux - 将 ISO8601 转换为 BASH 变量中的本地时间

gcc - “make install”compains libstdc++.so.6 没有 GLIBCXX_3.4.15,但我在 LD_LIBRARY_PATH 中有 libstdc++.so.6 文件

无法在 macOS Sierra 上将程序集文件 (.s) 与 GCC 链接