【发布时间】:2012-03-30 11:21:30
【问题描述】:
我有一些代码读取文本文件并扫描括号中的单词:'[' 和 ']'。
当我找到以 '[' 开头的行时,我读取了字符串:
line[64] = "[word]";
sscanf(line, "[%s]", resource);
printf("%s\n",resource);
==> word]
但我总是以字符串+括号结束。如何格式化 sscanf 以仅读取末尾没有括号的字符串?
【问题讨论】:
我有一些代码读取文本文件并扫描括号中的单词:'[' 和 ']'。
当我找到以 '[' 开头的行时,我读取了字符串:
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 */
【讨论】:
%99s吗?如果你能解释这一点,最好是参考标准,你肯定会得到我的支持。
] 未解释。假设需求更改为从 "[foo] [bar]" 中读取两个单词 ...
"%99s" 将[ 和] 读入变量。 "%s" 转换只跳过空格。
sscanf(line, "[%[a-z]]", resource) 也应该可以。你可能做错了什么......