0

我有以下我无法理解的 scanf 代码::

char board[3][3];
int i;
for(i=0;i<3;i++) 
scanf("%s[^\n]%*c", board[i]);

请帮助我逐字理解 scanf 语法中字母的含义。谢谢你。

4

2 回答 2

3

读取一系列非空白字符,然后"[^"是换行符,"]"然后是另一个未存储在任何地方的字符。我认为这不是真正需要的。您可以阅读 scanf 手册页(google it)以获取正确的语法。

解释:

%s- 捕获一系列非空白字符

%[- 捕获由集合确定的字符序列(以']'结尾)

这就是为什么%s[^\n]我觉得不对。应该%[^\n]改为。

于 2012-12-25T04:38:50.397 回答
1

AFAIK,

它的作用是 3 次(在 for 循环内),读取一行(使用 %s)直到遇到换行符(使用 [^\n])并丢弃最后一个(换行符)字符(使用 %*c) .

%*c

在这里,“*”将告诉 scanf 不存储“c”捕获的值。即换行符。

于 2012-12-25T06:17:10.673 回答