我有以下我无法理解的scanf代码::
char board[3][3];
int i;
for(i=0;i<3;i++)
scanf("%s[^\n]%*c", board[i]);
请帮我逐字逐句理解scanf语法中的字母是什么意思。 三江源。
答案 0 :(得分:3)
读取一系列非空白字符,然后是"[^"
,换行符,"]"
,然后再找一个未存储在任何地方的字符。我不认为这是实际需要的。您可以阅读scanf manpage(google it)以获得正确的语法。
说明:
%s
- 捕获一系列非空白字符
%[
- 捕获由set确定的字符序列(以']'结尾)
这就是为什么%s[^\n]
对我来说错了。应改为%[^\n]
。
答案 1 :(得分:1)
AFAIK,
这样做,3次(在循环内),读取一行(%s)直到遇到换行符(使用[^ \ n])并丢弃最后一行(换行符)(使用%) * C)。
%*c
这里,“*”将告诉scanf不存储“c”捕获的值。即换行符。