printf 和 vprintf 函数系列之间有什么区别,什么时候应该使用其中一个而不是另一个?

2024-01-03

我明白两者之间的区别printf, fprintf, sprintf等功能和vprintf, vfprintf, vsprintf等函数与它们如何处理函数参数有关。但具体如何呢?真的有理由使用其中一种而不是另一种吗?我应该总是使用printf因为这是在 C 中更常见的事情,或者是否有合理的理由选择vprintf反而?


printf()和朋友都可以正常使用。vprintf()当你想写自己的东西时,朋友就适合你printf()类函数。假设您想编写一个函数来打印错误:

int error(char *fmt, ...)
{
    int result;
    va_list args;
    va_start(args, fmt);
    // what here?
    va_end(args);
    return result;
}

你会发现你无法通过args to printf(), since printf()需要多个参数,而不是一个va_list争论。这vprintf()然而,函数do take a va_list参数而不是可变数量的参数,所以这里是完整的版本:

int error(char *fmt, ...)
{
    int result;
    va_list args;
    va_start(args, fmt);
    fputs("Error: ", stderr);
    result = vfprintf(stderr, fmt, args);
    va_end(args);
    return result;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

printf 和 vprintf 函数系列之间有什么区别,什么时候应该使用其中一个而不是另一个? 的相关文章

  • 是否可以根据 QSlider 的位置来改变其手柄的颜色?

    我非常清楚如何通过样式表自定义 QSlider 但我想知道是否可以执行以下操作 我希望滑块的手柄从蓝色变为黄色 当设置在左侧时 它是蓝色的 设置在左侧时 它是蓝色的 当你将它向右移动时 它会出现从蓝色到黄色的渐变 如果可以通过样式表 如何实
  • C 中的隐秘结构定义

    我遇到了以下情况迷宫定义 https github com gduarte lkb blob master code stack maze h code typedef struct mazeNode int hasCheese int t
  • 以编程方式获取命名管道的系统名称

    我正在使用 WCF NetNamedPipeBinding 编写进程间通信 我的目标是让服务在 net pipe localhost service 上运行 所以我运行最简单的主机 host new ServiceHost contract
  • 什么是具有副作用的表达式?为什么不应将它们传递给宏?

    我在 C 如何编程 一书中看到这样一句话 具有副作用 即变量值被修改 的表达式不应传递给宏 因为宏参数可能会被多次求值 我的问题是什么是具有副作用的表达式以及为什么不应将它们传递给宏 经典的例子是计算两个值的最大值的宏 define MAX
  • 通过指向基址的指针删除对象而不使用虚拟析构函数

    我有代码 class A1 public A1 cout lt lt A1 virtual A1 cout lt lt A1 class A2 public A2 cout lt lt A2 A2 cout lt lt A2 class B
  • 是否可以将 long long 返回值分配给 int64_t 而不会丢失 64 位机器中的精度?

    我已经实现了以下代码 include
  • 如何使用c#/VB.NET在word中插入书签

    我正在尝试使用 C 在 Word 文档中添加书签 但它不起作用 而且我在 msdn 文档和互联网上都找不到任何帮助 这就是我正在尝试做的事情 我正在阅读 Word 文档 然后在该文档中搜索关键字 然后将该文本转换为超链接 效果很好 现在 我
  • 计算序列而无法存储值?

    问题陈述 here http www spoj com problems EC SER 令 S 为无限整数序列 S0 a S1 b Si Si 2 Si 1 对于所有 i gt 2 你有两个整数 a 和 b 您必须回答有关序列中第 n 个元
  • esp8266互联网交换机问题

    我正在尝试制作一个门继电器开关系统 我可以通过端口转发从任何地方进行操作 我找到了一个非常有用的指南和代码 我的程序基于 https openhomeautomation net control a lamp remotely using
  • SolrNet:尝试添加和提交时 SolrConnectionException (400) 错误请求

    我已经到了 SolrNet 执行 Add 方法的地步 但是当我尝试 Commit 时 我收到了错误 以下是我的 schema xml 模型 调用它的代码以及我得到的错误 更奇怪的是 尽管出现错误 但在我重新启动 Tomcat 后 该模型仍会
  • QFileDialog::getOpenFileName 调试时崩溃,显然是由项目名称引起的?

    我遇到了一个让我非常困惑的问题 我在 Windows 7 上使用 Qt Creator 3 1 2 和 Qt 5 3 使用 MSVC 10 0 编译器和 Windows 8 1 调试工具中的 CDB 不确定我是否应该寻找特定于 Window
  • 使用 C# 从文本中删除数字

    我有一个要处理的文本文件 其中有一些数字 我只想要其中的文字 而不是其他任何东西 我成功删除了标点符号 但是如何删除数字呢 我想要使 用 C 代码 另外 我想删除长度大于 10 的单词 如何使用 Reg 表达式来做到这一点 您可以使用正则表
  • 将 boost::iostreams::mapped_file_source 与 std::multimap 一起使用

    我有相当大量的数据需要分析 每个文件大约有 5gig 每个文件的格式如下 xxxxx yyyyy 键和值都可以重复 但键是按升序排列的 我正在尝试使用内存映射文件来实现此目的 然后找到所需的键并使用它们 这是我写的 if data file
  • 找到两个值的平均值的正确方法是什么?

    我最近了解到整数溢出是 C 中的未定义行为 附带问题 C 中也是 UB 吗 在 C 编程中 您通常需要求两个值的平均值a and b 然而做 a b 2可能会导致溢出和未定义的行为 所以我的问题是 找到两个值的平均值的正确方法是什么a an
  • 寻找自定义 SynchronizationContext 的示例(单元测试所需)

    我需要定制同步上下文 http msdn microsoft com en us library system threading synchronizationcontext aspx that 拥有一个运行 Posts 和 Sends
  • 我们还需要迭代器设计模式吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何收集和存储tellp()、tellg()返回类型?

    我正在编写一个在文件中维护 linked list 的程序 因此 我通过使用tellp tellg 遍历文件并将其添加到特定的长整数 可以视为偏移量 以到达新位置 一个简单的例子是 long next offset sizeof long
  • 为什么在 C++ 内存管理中术语“自动”和“动态”优于术语“堆栈”和“堆”?

    与 SO 上的许多问题和答案相关 我了解到最好将其生命周期管理为驻留在自动存储中而不是堆栈中的对象 此外 动态分配的对象不应该被称为驻留在堆上 而应该被称为驻留在动态存储中 我知道有自动 动态和静态存储 但从未真正理解自动堆栈和动态堆之间的
  • 隐藏 MediaPlayer 控件(Microsoft 媒体平台播放器框架)

    我在 c xaml 应用程序中使用 MMP PF 提供我自己的控制元素来处理播放器 这就是为什么我想隐藏 禁用出现在底部的本机控件 在屏幕截图的屏幕中间 这只是使用了一个主题 有人知道该怎么做吗 我没能找到合适的房产 像这样使用 axWin
  • 同时使用多个控制台

    是否有捷径可寻 我现在仅使用控制台测试我的网络应用程序 最好的办法是从一个项目中拥有多个控制台 然后按一下 立即调试 菜单项 我可以像过去一样使用多个项目 但这似乎很笨拙 理想情况下 我可以启动多个控制台实例 从同一线程运行很好 并且让它们

随机推荐

  • htaccess - 禁止直接访问除登录用户之外的所有文件 (PHP)

    使用 htacess 拒绝所有 是否可以只允许登录我的系统的用户直接访问文件 如果有什么区别的话 我的网站是用 Drupal PHP 构建的 如果这是可能的 那么理想情况下我也想检查用户的角色 你不能这样做 htaccess独自的 你需要做
  • Visual Studio 2013隐藏构建进度窗口

    在 Visual Studio 2013 社区中 每次构建时 都会出现一个构建进度窗口 并在构建完成后消失 是否有一个选项可以隐藏而不显示该窗口 谢谢 该窗口是由 CodeMaid 扩展生成的 要禁用它 请打开 Codemaid 的配置 然
  • 如何根据动态改变背景颜色来动态改变文本颜色

    我正在建立一个新网站 需要我的文本根据不断变化的背景颜色改变颜色以保持对比度 我在网上搜索了不涉及 Sass 的答案 但没有一个有效 我尝试过一些 JavaScript 但它们仅在背景是您手动更改的固定颜色时才起作用 我当前的文件 http
  • ASP.NET 2.0 中的 Gridview 列宽度

    如何控制 ASP NET 2 0 中 gridview 控件的列宽 您可以使用 HeaderStyle Width ItemStyle Width 或 FooterStyle Width 属性 这些可以应用于所有列或每列
  • Typescript Jest 说我想要模拟的类型上不存在模拟或模拟返回值

    这是我想测试的一个类 Request js import axios AxiosInstance from axios import config from config const axiosSingleton AxiosInstance
  • 在 d3 中通过退出转换保持元素顺序 (selection.order)

    我将切入正题fiddle http jsfiddle net K6Yrw http jsfiddle net K6Yrw 点击第二个按钮快速查看效果 我在用着selection order因为我需要 DOM 元素以与数据元素相同的顺序存在
  • 乘客遇到库未加载错误:liblzma.5.dylib

    我正在尝试与乘客一起运行轨道 我安装了 AWS SDK 1 和 2 gem gem aws sdk v1 gem aws sdk gt 2 当我使用AWS sdk运行时 s3 AWS S3 new 我遇到错误 LoadError dlope
  • 使用 .htaccess 创建绝对路径的子域

    嘿 我的主人真是太糟糕了 由于某些奇怪的原因 在 cPanel 中创建子域根本不起作用 而且他们的支持热线总是很忙 我想我可以通过使用 htaccess 来解决这个问题 我确信这并不难 但我对 mod rewrite 有点陌生 并且在过去
  • Excel VBA 重新计算选择

    我有一些 Excel 电子表格对数据库的影响非常大 对总账表进行了 100 多次查询 哎呀 仅刷新我所在的工作表 SHIFT F9 在某些电子表格中很有帮助 但我想要一种仅刷新所选单元格的方法 我想出了以下代码 并将其放置在 ThisWor
  • 如何制作双向平台box2d主体?

    我使用 box2d 创建了平台 我想要 box2d 身体检测而不是动态检测 Box2d 形状将执行以下操作 在某些条件下检测碰撞 在某些情况下不检测碰撞 两种条件都适用于同一 box2d 对象中的不同条件 任何想法都会有很大帮助 提前致谢
  • nodejs firebase错误RangeError:超出最大调用堆栈大小失败

    我在 firebase 中遇到错误 FIREBASE 警告 用户回调引发异常 RangeError 超出最大调用堆栈大小 我没有发现我的错误 我在这里很迷失 请帮助 我的代码如下所示 app post updateCoords req re
  • 如何在perl中合并2个深度哈希

    我用 Perl 编写了一个 sub 来合并相同结构的 2 个哈希值 这样合并 a b a k1 gt sk1 gt v1 k2 gt sk3 gt v3 sk4 gt v4 b k1 gt sk2 gt v2 k3 gt sk5 gt v5
  • 谁以及何时分配 PCI/PCIe 设备 BAR 基地址?

    我正在寻找内核如何进行 PCI PCIe 枚举和 BAR 分配 我以为内核会在启动时分配BAR的PCI基地址 但是当我尝试pci Earlydump 在内核初始PCI子系统之前 查看BAR的值时 我发现所有基地址都已经分配了 这是否意味着
  • 在 redshift 中将 MM/DD/YYYY 转换为 YYYYMMDD

    我需要在亚马逊 Redshift 数据库中将 MM DD YYYY 转换为 YYYYMMDD 这个查询的结果给了我一些奇怪的结果 有人可以帮帮我吗 选择to date 07 17 2017 YYYYMMDD 0007 07 20 如果您只想
  • 为什么React项目名称不能包含大写字母?

    我在尝试在 React 中创建新项目 newRecipeApp 时收到以下消息 npx installed 91 in 29 359s Could not create a project called newRecipeApp becau
  • 是否可以指定TableRow的高度?

    我有一个TableLayout与多个TableRow里面的景色 我希望以编程方式指定行的高度 例如 int rowHeight calculateRowHeight TableLayout tableLayout new TableLayo
  • 如何在 VS 2008 中启用 DirectX 变量的更多调试信息?

    我能够启用 directX 变量 如 LPD3DXMESH 等 的调试信息 通常它只显示 IUnknown 和一些指针值 但如果启用了额外的调试 则可以查看有关该结构的更多详细信息 问题是我丢失了该项目 现在我不记得如何再次启用此类调试 请
  • 安装 JDK 和使用转储之间的区别

    全部 我想知道使用Oracle提供的安装程序安装JDK和使用安装后创建的JDK目录有什么区别 假设我使用 oracle 的安装程序在机器 M1 上安装了 JDK7u1 位置为 C Program Files Java JDK7u1 我可以将
  • 来自 Javascript 的 SOAP Web 服务调用

    我正在努力从网页成功地对 SOAP Web 服务进行 Web 服务调用 Web 服务是使用 JAX WS 的 Java Web 服务 这是我尝试调用的网络方法 WebMethod public String sayHi WebParam n
  • printf 和 vprintf 函数系列之间有什么区别,什么时候应该使用其中一个而不是另一个?

    我明白两者之间的区别printf fprintf sprintf等功能和vprintf vfprintf vsprintf等函数与它们如何处理函数参数有关 但具体如何呢 真的有理由使用其中一种而不是另一种吗 我应该总是使用printf因为这