gpt4 book ai didi

c - 如何计算 C 中格式字符串的参数数量?

转载 作者:太空宇宙 更新时间:2023-11-04 03:59:07 25 4
gpt4 key购买 nike

我有一个程序,它从命令行获取格式字符串,表示多个输出文件的文件名格式。它应该只需要一个可以替换的整数参数来生成真正的输出文件名,我想在进行输入检查时验证这一点。在 C 中确定格式字符串期望的参数数量的好方法是什么?

最佳答案

接受的参数数量取决于您的 C 库的版本(例如,%a 转换说明符是在 C99 中添加的)。您可以确定它不大于未转义的 % 字符数(即,在所有 %% 之后剩余的 % 字符数序列被删除)加上 * 字符的数量(可以是宽度说明符)。

不过,您应该考虑安全问题;如果用户提供 %n 格式说明符,这可能会导致写入任意内存位置。在其他情况下,供应例如%f 会导致输出垃圾值,%s 在任意内存内容中,甚至使用 %d 说明符允许用户提供字段宽度,例如%255d 可能导致缓冲区溢出。考虑不同的格式化方案会更聪明,例如替换一个标记(可能仍然是 %d),但不允许用户提供 printf 格式字符串。

关于c - 如何计算 C 中格式字符串的参数数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13629986/

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