使用“@”作为sscanf中的标记符,我没有得到预期的结果。
示例:
#include <stdio.h>
int main()
{
char buf[512], scan_buf1[512], scan_buf2[512];
sprintf(buf, "abc@def");
sscanf(buf, "%s@%s", scan_buf1, scan_buf2);
printf("Scanned buffer1 - %s scan buffer2 - %s\n", scan_buf1, scan_buf2);
}
Expected op:
Scanned buffer1 - abc scan buffer2 - def
Actual op:
Scanned buffer1 - abc@def scan buffer2 -我应该对"@“使用一些特殊的语法吗?我在手册页上什么也看不见。
发布于 2014-08-01 03:03:50
如果您阅读 (and family) reference,您将看到"%s"格式读取
非空格字符序列
这意味着"%s"将读取字符,直到到达空白为止。由于输入中没有空白,所以它将全部读入第一个字符串。
您可以通过使用"%["格式来解决这个问题:
sscanf(buf, "%[^@]@%s", scan_buf1, scan_buf2);https://stackoverflow.com/questions/25072206
复制相似问题