%(%)签到fscanf是什么意思?

时间:2014-02-23 03:30:57

标签: c scanf

我正在尝试理解某人的代码而且他们有

 while(fscanf(stdin_stream, "%*[^A-Za-z]"), fscanf(stdin_stream, "%198[a-zA-Z]", buffer) > 0)

%198对检查字母表中的所有字母做了什么?

由于这个问题,我得到了2分?为什么?因为我在论坛上提出了针对这些类型问题的问题?一堆bs。是的,我可以查看手册页,但是我没有找到一个解释它的人,因为以下答案确实如此。我正在寻找另一个信息来源来帮助我,因此我来到这里。但看到我得到一个问题的停靠点是荒谬的。

1 个答案:

答案 0 :(得分:3)

fscanf()函数使用"%"的出现来表示以下字符,直至字母序列,例如"%...d""%...f""%...[...]"意味着后续增加是存储扫描结果的地址。

fscanf()格式的详细信息非常广泛,应查阅各种在线资源以便完全理解。我只想指出几个为什么198? (这似乎是OP的问题)。

"%198[..."假设buffer可以容纳198 char + \0

如果没有198,可以在char中保存无数个buffer,导致缓冲区溢出。

常见的混淆是buffer大小应该处理198 + 1 char

char buffer[198+1];
fscanf(stdin_stream, "%198[a-zA-Z]", buffer);