下面的代码:
C
#include <stdio.h> int main(void) { char buf[80] = "salam"; const char *fmt = "\"%79[^\"]\""; int n; n = sscanf("\"\"", fmt, buf); printf("%d fields were read. buf = '%s'\n", n, buf); n = sscanf("\"hamidi\"", fmt, buf); printf("%d fields were read. buf = '%s'\n", n, buf); }
输出:
已读取 0 个字段。 buf=“萨拉姆”
已读取 1 个字段。 buf=“哈米迪”
这表明 sscanf 函数无法读取具有指定格式字符串的空字符串。 是否有一个很好的替代正则表达式格式字符串来通过 sscanf 函数读取长度为零到最多 79 个字符的字符串? 换句话说,我希望第一个 sscanf 将 ‘\0’ 插入到 buf[0] 并返回 1 而不是 0。有办法吗?
我尝试过的:
这只是一个问题。 这不是我必须尝试的事情。
コメント