0

我的 fscanf 函数有问题

原谅我的英语不好。

程序读取文件如下:

status = fscanf(ifile, "%%!%11s", ifbuf);

如果文件直接以所需条目开头,例如

%! UTF-8
some text

fscanf中读取一行ifbuf。如果在行中以空格开头

    %! UTF-8
some text

fscanf不读任何东西。

fscanf可以通过在格式字符串中添加一个空格来使函数在这两种情况下工作:

status = fscanf(ifile, " %%!%11s", ifbuf);

我想知道fscanf函数的行为有多正确。

4

2 回答 2

0

s在格式字符串中使用,它匹配不是空白字符的字节序列。该函数读取字节,根据格式解释它们,并将结果存储在其参数中。

在您的情况下,它会找到以空格开头的行,这与您要查找的格式不匹配。

于 2012-09-23T08:22:47.597 回答
0

您描述为观察到的行为是正确的行为。这些函数仅在某些(实际上除了and之外的大多数)转换规范中scanf()跳过前导空格。对于格式字符串的文字部分,它的行为或多或少是字面上的,只是格式字符串中的空格与数据中任意数量的空白字符匹配。%c%[

于 2012-09-23T08:35:55.797 回答