7
sscanf(line, "%d %64[^\n", &seconds, message);

%64[^的意思是- 最多 64 个字符?它应该与 GNU C 编译器一起使用吗?

4

1 回答 1

10

它的意思是“最多读取 64 个字符或在到达换行符时停止,以先到者为准”。它由标准指定,因此所有标准库都必须支持它。

C11 7.21.6.2

[匹配一组预期字符(扫描集)中的非空字符序列。[...] 转换说明符包括格式字符串中的所有后续字符,直到并包括匹配的右括号 (])。

括号之间的字符(扫描列表)组成扫描集,除非左括号之后的字符是一个抑扬符 (^),在这种情况下,扫描集包含所有未出现在抑扬符和右括号之间的扫描列表中的字符。

如评论中所述,可能需要匹配]来分隔扫描列表。不需要说明s

于 2012-05-25T07:23:19.010 回答