gpt4 book ai didi

printf - 使用 fflush(stdout) 作为 fprintf() 参数安全吗?

转载 作者:行者123 更新时间:2023-12-02 04:51:44 28 4
gpt4 key购买 nike

我发现了这行代码:

fprintf(stdout, "message", fflush(stdout));

请注意,该消息不包含任何 % 标记。

这在 Visual C++ 中安全吗? fflush() 成功时返回 0,失败时返回 EOF。 fprintf() 将用这个额外的参数做什么?

我首先认为这是一个奇怪的黑客行为,无需额外的行即可添加 fflush() 调用。但这样写, fflush() 调用将在 fprintf() 调用之前执行,因此它不会刷新正在打印的消息,而是刷新等待刷新的消息(如果有的话)......我对吗?

最佳答案

很安全。这是 C 的内容(至少 C99,段落7.19.6.1) 对此进行了说明

If the format is exhausted while arguments remain, the excess arguments shall be evaluated but are otherwise ignored.

如果目标是避免排队,我宁愿这样做

fflush(stdout); fprintf(stdout, "message");

只是为了防止后来的人阅读该代码并用 bat 追捕我。

关于printf - 使用 fflush(stdout) 作为 fprintf() 参数安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4749125/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com