理解scanf语法

时间:2012-12-25 04:32:31

标签: c scanf

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

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

请帮我逐字逐句理解scanf语法中的字母是什么意思。 三江源。

2 个答案:

答案 0 :(得分:3)

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

说明:

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

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

这就是为什么%s[^\n]对我来说错了。应改为%[^\n]

答案 1 :(得分:1)

AFAIK,

这样做,3次(在循环内),读取一行(%s)直到遇到换行符(使用[^ \ n])并丢弃最后一行(换行符)(使用%) * C)。

%*c

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