snprintf() 总是以 null 终止吗?

2023-12-09

snprintf 是否始终为 null 终止目标缓冲区?

换句话说,这是否足够:

char dst[10];

snprintf(dst, sizeof (dst), "blah %s", somestr);

或者如果 somestr 足够长,您是否必须这样做?

char dst[10];

somestr[sizeof (dst) - 1] = '\0';
snprintf(dst, sizeof (dst) - 1, "blah %s", somestr);

我对标准的内容以及一些流行的 libc 可能执行的非标准行为都很感兴趣。


正如其他答案所确定的那样:should:

snprintf... 将结果写入字符串缓冲区。 (...) 将以空字符终止,除非 buf_size 为零。

因此,您需要注意的是不要向其传递零大小的缓冲区,因为(显然)它无法将零写入“无处”。


然而,beware微软的图书馆不具有一个名为snprintf而是历史上only有一个函数叫做_snprintf(注意前导下划线)不附加终止空值。这是文档(VS 2012,~~VS 2013):

http://msdn.microsoft.com/en-us/library/2ts7cx93%28v=vs.110%29.aspx

返回值

设 len 为格式化数据字符串的长度(不包括 终止为空)。 _snprintf 的 len 和 count 以字节为单位,wide _snwprintf 的字符。

  • 如果 len

  • 如果 len = count,则 len 个字符存储在缓冲区中,不 附加 null 终止符,并返回 len。

  • 如果 len > count,则 count 个字符存储在缓冲区中,不 附加空终止符,并返回负值。

(...)

视觉工作室 2015(VC14)显然引入了符合snprintf函数,但是带有前导下划线和non空终止行为仍然存在:

The snprintf当 len 大于时,函数截断输出 大于或等于计数,通过将空终止符放置在buffer[count-1]. (...)

对于所有功能other than snprintf,如果 len = 计数,则 len 字符存储在缓冲区中,不附加空终止符, (...)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

snprintf() 总是以 null 终止吗? 的相关文章

  • 成员字段、构建顺序

    在 C 中 当执行如下所示的操作时 构造顺序是否得到保证 Logger Logger kFilePath logs runtime log logFile kFilePath 是的 施工顺序始终得到保证 但是 不能保证它与对象在初始值设定项
  • 显示 div 内的用户名列表

    我是 jQuery 新手 在我的项目中 我创建了一个类User其中代码如下所示 static ConcurrentDictionary
  • 读取大文件并制作字典

    我有一个大文件 我需要读取它并从中制作字典 我希望这一切能够尽可能快 然而我的Python代码太慢了 这是一个显示问题的最小示例 首先制作一些假数据 paste lt seq 20000000 lt seq 2 20000001 gt la
  • 在异步请求中使用超时回调

    我之前问过这个问题 但我将用提出的解决方案来完成这个问题 并提出另一个问题 我正在使用这个类来进行异步网络请求 http msdn microsoft com en us library system net webrequest aspx
  • std::bind2nd 和 std::bind 与二维数组和结构数组

    我知道 C 有 lambda 并且 std bind1st std bind2nd 和 std bind 已弃用 然而 从C 的基础开始 我们可以更好地理解新特性 所以 我从这个非常简单的代码开始 使用int 数组s 第一个例子 与std
  • C语言中没有循环可以打印数组吗?

    例如 在Python中 如果我们将一个列表作为数组 它会直接用一行代码打印整个数组 有什么办法可以用C语言实现同样的事情吗 简短回答 No 对表格上几乎所有问题的简短回答 用 C 语言做 X 工作能像用 Python 一样简单吗 No 长答
  • 为什么我在 WinForms 列表框中得到“System.Data.DataRowView”而不是实际值?

    每当我运行代码并尝试查看highscore我在列表框中得到的只是System Data DataRowView 谁能明白为什么吗 Code MySqlConnection myConn new MySqlConnection connStr
  • PartialView Action 正在调用自身

    我有 MVC 应用程序 它用于从主视图 ProductMaster 将 ProductAreaGrid 列表显示为 PartialView 并且它将在局部视图内将 CreateProductArea 作为 PartialView 我的 Gr
  • 使用 catch all 字典属性将 json 序列化为对象

    我想使用 JSON net 反序列化为对象 但将未映射的属性放入字典属性中 是否可以 例如给定 json one 1 two 2 three 3 和 C 类 public class Mapped public int One get se
  • 从二进制文件读取字节到 long int

    我有两个问题 我有二进制文件的数据 我想使用 read 函数读取前 8 个字节以签署 long int 但我不能 你知道我该怎么做吗 如何直接读取一块数据到字符串中 我可以像所示那样阅读吗 前任 ifstream is is open te
  • 原子的 C++ 内存屏障

    在这方面我是个新手 谁能提供以下内存屏障之间差异的简化解释 窗户MemoryBarrier 围栏 mm mfence 内联汇编asm volatile memory 内在的 ReadWriteBarrier 如果没有简单的解释 一些好文章或
  • Web 文本编辑器中的 RTF 格式

    网络上是否有支持 RTF 格式文档输入的文本编辑器 我知道这对 webdev 来说有点奇怪 但我需要从数据库中读取 RTF 文档 并在基于 Web 的文本编辑器中对其进行编辑 然后将其存储回 RTF 中 在我在转换工具上投入太多资金之前 我
  • 如何解决文件被另一个进程使用的问题?

    我一直在 VS NET 2010 中调试 没有任何问题 但现在无法建造 我收到错误 Unable to copy file filename to bin Debug filename The process cannot access t
  • 使用联合对 IP 地址进行多种解释?

    在工作中 我们使用以下构造来将 IP 地址解释为 4 字节数组或 32 位整数 union IPv4 std uint32 t ip std uint8 t data 4 这很好用 但是读完这本书的第 97 章 不要使用联合来重新解释表示
  • XCode std::thread C++

    对于学校的一个小项目 我需要创建一个简单的客户端 服务器结构 它将在路由器上运行 使用 openWRT 并且我试图在这个应用程序中使用线程做一些事情 我的 C 技能非常有限 所以我在internet https stackoverflow
  • 如何在 SQLite 中检查数据库是否存在 C#

    我目前正在用 C 编写一个应用程序 并使用 sqlite 作为嵌入式数据库 我的应用程序在启动时创建一个新数据库 但如何让它检查数据库是否存在 如果它确实存在 我如何让它使用它 如果不存在如何创建一个新数据库 这是我到目前为止所拥有的 pr
  • 动态菜单创建IoC

    我想知道是否有人知道我如何创建如何使用 AutoFac 之类的东西来让我动态地允许 dll 创建自己的表单和菜单项以在运行时调用它们 所以如果我有一个 员工 dll 新入门表格 证书表格 供应商 dll 供应商详细信息来自 产品形态 在我的
  • 如何使 WinForms UserControl 填充其容器的大小

    我正在尝试创建一个多布局主屏幕应用程序 我在顶部有一些按钮链接到应用程序的主要部分 例如模型中每个实体的管理窗口 单击这些按钮中的任何一个都会在面板中显示关联的用户控件 面板包含用户控件 而用户控件又包含用户界面 WinForms User
  • 如何使用“路径”查询 XDocument?

    我想查询一个XDocument给定路径的对象 例如 path to element I want 但我不知道如何继续 您可以使用以下方法System Xml XPath Extensions http msdn microsoft com
  • C# 模式匹配

    我对 C 有点陌生 我正在寻找一个字符串匹配模式来执行以下操作 我有一个像这样的字符串 该书将在 唐宁街 11 号接待处 并将由主要医疗保健人员参加 我需要创建一个 span 标签来使用 startIndex 和 length 突出显示一些

随机推荐

  • 即时搜索 PB 级数据

    我需要在 CSV 格式文件中搜索 PB 级的数据 使用LUCENE建立索引后 索引文件的大 小是原始文件的两倍 是否可以减小索引文件的大 小 如何在HADOOP中分发LUCENE索引文件以及如何在搜索环境中使用 或者是否有必要 我应该使用s
  • 如何在 pytorch 中更改输入图片的尺寸?

    我制作了一个卷积神经网络 我希望它获取输入图片和输出图片 但是当我将图片转换为张量时 它们的尺寸错误 RuntimeError Expected 4 dimensional input for 4 dimensional weight 20
  • Jenkins 无法识别生成的 allure 报告 xml 文件的正确目录

    我已成功将 Allure 报告集成到我的基于 Maven 的 testNG 项目中 并且能够使用 jetty 服务器查看该报告 但现在我正在尝试按照此处建议的说明将魅力报告与詹金斯集成 http wiki qatools ru displa
  • 如何处理不在 UINavigationController 堆栈顶部的 UIViewController 的旋转?

    我在 UINavigationController 中有一个根 UIViewController VC1 它通过在 willRotateToInterfaceOrientation 方法中手动调整其视图 子视图框架来处理旋转 如果根 UIV
  • 加密/解密字节数组 Crypto++

    我正在尝试使用 AES 加密字节数组 我已经能够毫无问题地加密字符串和文件 但是字节数组似乎不适合我 我传入一个要加密的字节数组 为了便于测试 我只传入由 crypto bArrayToEncrypt 生成的 AES 密钥 加密似乎有效 但
  • systemd 服务未使用 dbus 接口启动

    我正在尝试启动 systemd 服务 usnig dbus 服务 我正在关注下面提到的链接的示例 5 http www freedesktop org software systemd man systemd service html 我的
  • 在 Lua 中按值对表进行关联排序

    我有一个 key gt value 表 我想在 Lua 中排序 键都是整数 但不连续 并且有意义 Lua唯一的排序函数似乎是table sort 它将表视为简单数组 丢弃原始键及其与特定项目的关联 相反 我本质上希望能够使用PHP s as
  • GCP Firestore Python 凭证

    我在将数据从 Linux 虚拟机发送到 GCP 的 Firestore 时遇到问题 我只是想更新数据库内的项目 我遇到有关凭据的问题 根据我使用的方法 我会得到不同的错误 但我相信它们都源于同一问题 请注意 我有一个带有 json 凭据的服
  • 为什么 T* 可以在寄存器中传递,但 unique_ptr 却不能?

    我正在观看 Chandler Carruth 在 CppCon 2019 上的演讲 不存在零成本抽象 在其中 他举了一个例子 说明他对使用std unique ptr
  • 为此使用什么正则表达式

    我正在编写一个正则表达式 它将找到 1个或多个点 后面跟一个空格或者后面根本不跟任何东西 1 个或多个问号 再次后面跟一个空格或者后面根本不跟任何东西 我该如何编写这个正则表达式 以便让它执行此或操作 你只需要逃避 or with a 从字
  • Rails 3 关联错误

    我有一个表格页面和一个表格作者 每一页都属于一位作者 还为表和模型创建了迁移 但在表单中使用它时出现此错误 NoMethodError in Pages new Showing C rorapp app views pages form h
  • 不活动和活动、应用程序空闲、用户不活动自动注销

    经过大量谷歌搜索并花费了 4 个小时后 我想这是查找用户不活动和锁定屏幕的最佳方法 public MainWindow InitializeComponent var timer new DispatcherTimer Interval T
  • 如何将 detectorron2 的增强功能与使用 register_coco_instances 加载的数据集结合使用

    我已经在以 coco 格式标记和导出的自定义数据上训练了 detectorron2 模型 但现在我想应用增强并使用增强数据进行训练 如果我不使用自定义 DataLoader 而是使用 register coco instances 函数 我
  • iText7获取表格高度

    这是我的代码片段 Dim table As iText Layout Element Table New iText Layout Element Table 4 table SetWidth pagesize GetWidth 40 Di
  • 无法使用 Java FTP 客户端下载具有阿拉伯名称的文件

    我有连接到 FTP 服务器并下载文件的 Java 代码 如果文件名包含阿拉伯字母 则总是下载失败 但如果是英文的话 就下载成功了 这是我的代码 如果路径是这样则下载失败 String actualFileLocation RelatedDo
  • 需要帮助使用 Visual Studio .asm 文件以汇编语言显示带小数位的数字

    需要帮助使用 Visual Studio 以汇编语言显示带小数位的数字 asm file 例如 10 除 4 将是 2 5 但它只显示 2 mov eax 10 mov ebx 4 xor edx edx div ebx call Writ
  • 当给定IP地址和网络掩码时,如何计算IP范围?

    当 IP 范围写为 aaa bbb ccc ddd netmask 时 CIDR 表示法 我需要用 C 计算此范围内的第一个和最后一个包含的 ip 地址 Example Input 192 168 0 1 25 Result 192 168
  • Telegram-bot (telepot api):是否可以直接从 URL 发送图像而不保存它

    我使用 python 编写一个电报机器人远程遥控API 我现在陷入了这样的境地 我想发送直接来自 URL 的图片 而不将其存储在本地 Telepot提供以下发送照片的说明 gt gt gt f open zzzzzzzz jpg rb so
  • WinRT FlipView 类似 WP8 中的控件

    在我的应用程序中 我需要显示一组图像 就像在 Windows Phone 8 照片应用程序中一样 您可以在图像之间左右滑动 我尝试过 Panorama 和 Pivot 控件 但这两个控件的行为都不像 WinRTs FlipView 全景图非
  • snprintf() 总是以 null 终止吗?

    snprintf 是否始终为 null 终止目标缓冲区 换句话说 这是否足够 char dst 10 snprintf dst sizeof dst blah s somestr 或者如果 somestr 足够长 您是否必须这样做 char