我有以下我无法理解的 scanf 代码::
char board[3][3];
int i;
for(i=0;i<3;i++)
scanf("%s[^\n]%*c", board[i]);
请帮助我逐字理解 scanf 语法中字母的含义。谢谢你。
读取一系列非空白字符,然后"[^"
是换行符,"]"
然后是另一个未存储在任何地方的字符。我认为这不是真正需要的。您可以阅读 scanf 手册页(google it)以获取正确的语法。
解释:
%s
- 捕获一系列非空白字符
%[
- 捕获由集合确定的字符序列(以']'结尾)
这就是为什么%s[^\n]
我觉得不对。应该%[^\n]
改为。
AFAIK,
它的作用是 3 次(在 for 循环内),读取一行(使用 %s)直到遇到换行符(使用 [^\n])并丢弃最后一个(换行符)字符(使用 %*c) .
%*c
在这里,“*”将告诉 scanf 不存储“c”捕获的值。即换行符。