我怎么能sscanf的以下字符串如何sscanf的这个字符串
空(1)
空(20)
我尝试以下,但始终未能
int count;
sscanf(buf, "%*s(%d)", &count)
谢谢提前!
我怎么能sscanf的以下字符串如何sscanf的这个字符串
空(1)
空(20)
我尝试以下,但始终未能
int count;
sscanf(buf, "%*s(%d)", &count)
谢谢提前!
变化
sscanf(buf, "%*[^(](%d", &count);
sscanf总是以你给出的格式读取。
你的测试字符串是空的(1),但在sscanf的ü用sscanf(buf, "%*s(%d)", &count)
通过这种方式你企图复制“空”来算,这将始终会失败,因为你不能指定字符串为int。
做这样的事情,
int count;
char s[20];
sscanf(buf, "%*s(%d)",s, &count)
你必须先为s分配内存 – Laurijssen
不是,%s将被忽略每个sscanf手册 – BobAlmond
@BobAlmond - 我会一直指这个网站http://www.tutorialspoint.com/c_standard_library/c_function_sscanf.htm 并没有这样的定义。我想你的理解错误.. – arunb2w
如果文本将永远是 “空(一些诠释)”,然后
int count;
int n=0;
if (sscanf(buf, "empty(%d)%n", &count, &n) == 1) && (n > 0)) Success();
sscanf()
将匹配char
for char
(空白处理方式不同),直到达到"%d"
,那么它会尝试匹配int
。继续扫描,匹配char
为char
,直到"%n"
,将扫描的char
计数保存到n
。
测试对1的返回值(1个参数扫描,%N ARGS不出力),而当看到n
不再是0,扫描已知有完全结束。
可以使用代码来确保没有任何东西额外其次。
if (sscanf(buf, "empty(%d)%n", &count, &n) == 1) && (buf[n] == '\0')) Success();
empty(1)and empty(20)?这是什么 – tesseract
这是他想sscanf的字符串。 –