我对fscanf函数有个问题。
原谅我英语不好。
程序按以下方式读取该文件:
status = fscanf(ifile, "%%!%11s", ifbuf);如果文件直接以所需的条目开头,例如
%! UTF-8
some textfscanf读取ifbuf中的一行。如果行中以空格开头
%! UTF-8
some textfscanf什么也不读。
在这两种情况下,都可以通过在格式字符串中添加空格来实现fscanf函数的工作:
status = fscanf(ifile, " %%!%11s", ifbuf);我想知道fscanf函数的行为是否正确。
发布于 2012-09-23 08:35:55
你所说的被观察到的行为是正确的行为。scanf()函数只跳过一些转换规范(实际上是%c和%[以外的大部分)的前导空格。对于格式字符串的文字组件,除了格式字符串中的空格与数据中任意数量的空白字符相匹配外,它的行为或多或少都是字面上的。
发布于 2012-09-23 08:22:47
您在格式字符串中使用s,该字符串与非空白字符的字节序列相匹配。该函数读取字节,根据格式解释它们,并将结果存储在其参数中。
在您的例子中,它会找到一个以空格开头的行,这与您要寻找的格式不匹配。
https://stackoverflow.com/questions/12550309
复制相似问题