sscanf(line, "%d %64[^\n", &seconds, message);
%64[^是什么意思 - 最多64个字符?它能在GNU C编译器中使用吗?
sscanf(line, "%d %64[^\n", &seconds, message);
%64[^是什么意思 - 最多64个字符?它能在GNU C编译器中使用吗?
它意味着“最多读取64个字符或在遇到换行符时停止,以先到者为准”。这是由标准规定的,因此所有标准库都必须支持它。
C11 7.21.6.2
[
匹配来自一组期望字符(扫描集)中的一个非空字符序列。[...] 转换说明符包括格式字符串中的所有后续字符,直到(含)匹配右方括号(])。方括号之间的字符(扫描列表)构成扫描集,除非左方括号后的字符是脱字符(^),此时扫描集包括脱字符和右方括号之间未出现在扫描列表中的所有字符。
如评论所述,可能需要匹配一个右方括号来界定扫描列表。不需要使用s说明符。
]
符号。 - cnicutars
。在这种情况下,[
就是s
。 - cnicutar