gets() 函数和输入中的 '\0' 零字节

2023-11-29

会不会gets()C 语言中的函数(例如 glibc)如果读取到零字节('\0')从文件中?

快速测试:echo -ne 'AB\0CDE'

Thanks.

PS这个问题来自这个问题的评论:返回 libc - 问题

PPS the gets函数是危险的,但这是一个关于这个函数本身的问题,而不是关于任何人是否应该使用它的问题。


的行为gets()是当遇到换行符或遇到 EOF 时停止。它不在乎是否读取\0 bytes.

C99 标准,7.19.7.7

Synopsis

   #include <stdio.h>

   char *gets(char *s);

描述

The gets函数从 stdin 指向的输入流中读取字符到 指向的数组s,直到遇到文件结尾或读取换行符。 任何换行符都会被丢弃,并且紧随其后写入一个空字符 最后一个字符读入数组。

来自 GNU libc 文档:http://www.gnu.org/software/libc/manual/html_node/Line-Input.html#Line-Input

— 已弃用的函数:char * gets (char *s)

功能gets从流 stdin 读取字符直到下一个换行符,并将它们存储在字符串 s 中。换行符被丢弃(请注意,这与 fgets 的行为不同,后者将换行符复制到字符串中)。如果gets遇到读取错误或文件结尾,则返回空指针;否则返回 s。

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

gets() 函数和输入中的 '\0' 零字节 的相关文章

  • 从 C# 调用非托管 dll。拿2

    我编写了一个 C 程序 它调用一个 C DLL 将命令行参数回显到文件中 当使用 rundll32 命令调用 c 时 它显示命令行参数没有问题 但是当从 c 内部调用它时 它不会显示 我问了这个问题 https stackoverflow
  • 将数据集导出到 EXCEL

    我使用以下代码将数据库表中的字段导出到 Excel 中 我想要做的是能够编写一条 SQL 语句从多个表中检索字段并将其导出到 Excel 中 这段代码只允许我导出一张表 另外 如何显示保存提示对话框 示例代码将不胜感激 非常感谢 prote
  • 如何查找boost运行时版本

    我正在编写一个使用 boost 的 C 库 在这个库中 我想包含有关用于编译我的库的二进制版本的 boost 版本的信息 我可以使用宏BOOST VERSION这很好 我还想确定哪个是 boost 的运行时版本 以便我可以与用于编译我的库的
  • 实体框架 - 循环更新属性

    我正在尝试找到一种方法来循环 EF 对象的属性并更新这些属性的值 更具体地说 我有 50 个字段 其中最多填充 50 个下拉列表 所有 50 个可能都需要填充 也可能不需要填充 为了解决这个问题 我有一个中继器 最多可以创建 50 个 DD
  • 每个 CPU 核心处于 C0 电源状态的时间

    任何帮助弄清楚如何做到这一点都会很棒 在过去一秒内 每个 CPU 核心处于 C0 电源状态的时间有多少 这是针对 Mac 应用程序的 因此需要 Objective C cocoa 和 c OS X 没有任何公开 CPU c 状态的 API
  • 将 try_emplace 与 shared_ptr 一起使用

    所以我有一个std unordered map
  • 在 C++ 中,严格别名规则中的“访问”是什么意思?

    3 10 10 说 如果一个程序试图access通过除以下类型之一之外的泛左值存储对象的值 行为未定义 然而 术语 访问 并没有在任何地方定义 在这种情况下这意味着read or 读取或修改 在 C 标准中 它被明确定义为读取或修改 然而在
  • 为什么在 Linux 上字符串文字的内存地址与其他字符串文字的内存地址如此不同?

    我注意到字符串文字在内存中的地址与其他常量和变量 Linux 操作系统 非常不同 它们有许多前导零 未打印 Example const char h Hi int i 1 printf p n void h printf p n void
  • 用 C++ 解密文件,该文件使用 openssl -aes-128-cbc 加密

    我正在尝试用 C 解密文件 该文件使用以下命令加密 openssl enc nosalt aes 128 cbc pass pass test in test txt out test enc txt p 控制台显示key 098F6BCD
  • 未定义条件编译符号

    我无法让 Visual Studio 按照我的预期运行 我创建了 2 个配置文件 一个定义了符号 FOO 另一个定义了符号 BAR 我有这个代码 static class MyClass if FOO public static strin
  • 为什么std::string在发布时是标准布局类型,但在调试时不是标准布局类型?

    include
  • 标准头文件中的 C 编译器错误 - 未定义的 C++ 定义

    我正在尝试编译 C 程序 但收到许多错误 这些错误是在标准 C 头文件 inttypes h stdio h stat h 等 中遇到的 错误的来源是以下未定义的常量 BEGIN DECLS END DECLS BEGIN NAMESPAC
  • 如何使用 Caliburn.Micro MVVM 将焦点设置到控件

    我有一个表单 我想在发生某些用户操作时将焦点设置到文本框 我知道 MVVM 的处理方式是绑定到 VM 属性 但是 TextBox 没有允许这种情况发生的属性 从虚拟机设置焦点的最佳方法是什么 我创建了一个 IResult 实现 可以很好地实
  • Parallel.For 和 Break() 误解?

    我正在研究 For 循环中的并行性中断 看完之后this http tipsandtricks runicsoft com CSharp ParallelClass html and this http reedcopsey com 201
  • 专家 C#/.Net/WPF 开发人员应该了解哪些知识? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 我可以在C中直接比较int和size_t吗?

    我可以比较一个int and a size t像这样的变量 int i 1 size t y 2 if i y Do something 或者我必须输入其中之一 只要满足以下条件 它就是安全的int为零或正数 如果它是负数 并且size t
  • 选择要重写哪个基类的方法

    鉴于以下情况 class Observer public virtual void Observe Parameter p 0 template
  • 在 C# 中将 ulong 映射到 long ?

    我正在尝试将 ulong 映射到 long 反之亦然 将 uint 映射到 int 反之亦然 如下所示 为了将值保存在具有签名类型的 MS SQL 数据库中仅限整数和大整数 我这样做是因为我必须检查 在数据库中 一个数字 uint ulon
  • 如何并排显示 4 个三角形图案

    我无法让 4 个不同的三角形图案并排出现 这是一个控制台应用程序 这正是我试图通过使用嵌套 for 循环来实现的目标
  • 如果未返回,则在一段时间后终止线程

    我有一个线程从网络或串行端口获取一些数据 如果 5 秒内没有收到数据 则线程必须终止 或返回 false 换句话说 如果线程运行时间超过 5 秒 则必须停止 我用 C 编写 但任何 NET 语言都可以 有两种方法 1 封装超时 从网络或串行

随机推荐

  • 使用 Spring Data JPA 时我的存储库无法自动初始化

    在探索了几个教程后 我尝试将 spring data jpa 添加到我的 spring mvc web 项目中 但我发现我的存储库无法自动初始化 我的服务类中出现 NullPointerException 请看我下面的示例代码 我的存储库
  • Lua 编程 - os.execute() 在 Windows 中不起作用

    我正在 pure Lua 中创建一个函数来扫描目录中的文件并将它们放在另一个文件中 我尝试的命令是 os execute dir B C Users Fernando workspace Organizator2 s1 gt C Users
  • 如何在eclipselink中访问多个租户?

    eclipselink 或 Hibernate 中的租户是一个很好的概念 可以将数据域彼此分开 我正在使用 eclipselink 和单表策略 有时需要访问多个租户的数据 例如出于管理目的 有没有好的方法可以实现这一目标 我不想跑遍所有租户
  • 将图表坐标转换为像素

    我应该在极坐标图中画一个圆圈 上面有一些文字 我开始使用 PostPaint 获得了图表图形 因此我能够在上面绘制和编写自定义内容 我的主要问题是位置 例如 我想在 x 和 y 轴交叉的地方绘制 sg 但我没有找到任何有效的方法将图形坐标
  • firebase subscribeToTopic OnCompleteListener 没有被调用

    我正在开发一个 Android 项目 其中用户将订阅 Firebase 主题 我写了如下代码 FirebaseMessaging getInstance subscribeToTopic update addOnCompleteListen
  • 使用 OpenSSL 的客户端/服务器程序的文档

    我有一个用 C 编写的 TCP 客户端 服务器程序 我想使用 OpenSSL 保护交换的数据 这对我来说很新 我在网上找不到示例 您能指出一些关于此事的 googd 文档吗 谢谢你 检查以下链接 他们应该有帮助 http www linux
  • 有人做过 Osherove 的 TDD Kata“字符串计算器”的 Objective-C Xode 版本吗?

    总是尝试更好地编码 我对针对 Objective C 和 Xcode 进行 TDD 很感兴趣 你知道有什么帖子可以实现类似的功能吗Roy Osherove 的 字符串计算器 Kata Update 尝试找出如何在 iOS 上加速 TDD 我
  • 如何在 Tkinter 文本搜索方法中使用正则表达式?

    我想在方括号内找到一个突出显示的区域 这些方括号可以包含任何文本 A hello world B this is a tree A tkinter documentation is bad I want to highlight the w
  • Firefox WebExtension:如何在禁用/卸载之前运行代码?

    我最近将我的 GreaseMonkey 脚本转换为 WebExtension 只是为了获得该过程的第一印象 现在我已经达到了这样一个地步 当所述扩展被禁用 卸载时 最好进行一些清理或简单地撤消我的所有更改 从我在 Mozilla 页面上看到
  • React-Navigation-5:同一屏幕中的多个MaterialTopTabNavigator

    我正在升级我的项目react navigation v4 to react navigation v5 我需要在同一屏幕内有两个顶部栏 将屏幕分为两半 但这样做会出现此错误 错误 已为此容器注册另一个导航器 您可能在单个 导航容器 或 屏幕
  • 在 React Native 中具有交替颜色的列表视图

    我有如下例所示的对象数组 id 13100 key Emlak Vergisi y 135638 98 id 13154 key evre Temizlik y 956 17 id 19998 key Genel Tahakkuk y 89
  • 必须使用实例作为第一个参数来调用未绑定的方法(什么也没有)

    我试图将所有类从一个继承中移出 我写了这个小脚本 class c1 def move x 1 y 1 class c2 c1 y 1 x 2 c c2 c move print str c x str c y 当我运行它时我得到 Trace
  • ASP.NET MVC 视图模型模式

    EDIT 我做了一些更好的事情使用 ViewModel 从视图填充和读取数据 叫它价值注入器 http valueinjecter codeplex com 它被使用http prodinner codeplex com ASP net M
  • 注意:数组到字符串的转换 - PHP 和 mySQL

    我一直在阅读这里与此相关的每个线程 但我总是弄错 请帮助 因为我总是收到错误 注意 数组到字符串的转换 第 address mysql result 行 0 以下 请帮忙 if p address mysql query email add
  • 内核模块可以主动通过netlink向用户空间发送消息吗?

    我正在尝试运行以下代码 该代码是从here 我做了一些更改以使用较旧的内核版本运行它 当我插入内核模块时 nlmsg multicast 失败并记录为nlmsg multicast error 3 in var log messages 在
  • jQuery dataTables makeEditable() 不是函数

    我是数据表新手 我正在尝试使表可编辑 但我不断收到此错误 类型错误 dataTable makeEditable 不是函数 我的 jQuery 脚本如下所示 document ready function var oTable data t
  • 如何将错误和警告记录到文件中?

    如何打开所有错误和警告并将它们记录到文件中 但要在脚本中设置所有这些 不更改 php ini 中的任何内容 我想定义一个文件名 以便所有错误和警告都记录到其中 使用以下代码 ini set log errors 1 ini set erro
  • 无法从 Block 将对象添加到 NSMutableArray

    我有一种感觉 我这里的问题确实是阻塞 但也许还有其他原因 我正在尝试转发地址地理编码并将坐标放入数组中以供稍后使用 当我尝试调用我尝试添加到块中的数组中的对象之一时 底部会引发异常 在块文本中打印任何 NSLog 之前也会引发异常 处理这个
  • 检测/挂钩窗口移动/拖动其他外部进程

    检测其他进程的窗口移动 拖动的最佳方法是什么 在 Windows 7 64 位中 我目前正在使用 C 和 C 研究 DLL 中的全局挂钩 这是一种痛苦 因为它不想正常工作 我在键盘和鼠标挂钩方面取得了一些成功 但对于窗口消息我不知道出了什么
  • gets() 函数和输入中的 '\0' 零字节

    会不会gets C 语言中的函数 例如 glibc 如果读取到零字节 0 从文件中 快速测试 echo ne AB 0CDE Thanks PS这个问题来自这个问题的评论 返回 libc 问题 PPS the gets函数是危险的 但这是一