是否可以在不知道c中数组长度的情况下使用gets?

2023-12-19

如果我们想在 c 中使用 gets,我们会这样做:

int main(void) {
  char str[100];
  while (gets(str)) {
  printf("%s\n",str); 
 }
}

我们必须先知道str的长度(即100),然后使用gets。是否可以在不知道c中数组长度的情况下使用gets?


如果你的意思是使用gets安全地,不,这是不可能的。

Advice: 不要使用gets,因为不先知道长度,可能会导致缓冲区溢出。使用fgets http://www.cplusplus.com/reference/cstdio/fgets/相反,或使用gets_s in C11.

实际上,gets已被删除stdio.h从C11开始。 (在 C99 中,它已被弃用)

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

是否可以在不知道c中数组长度的情况下使用gets? 的相关文章

  • 中间件 API 的最佳实践是什么? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我们正在开发一个中间件 SDK 采用 C 和 Java 语言 供游戏开发人员 动画软件开发人员 阿凡达开
  • C++ 模板中的名称查找

    我有一些 C 代码 如果没有 fpermissive 选项 就无法再编译 这是我无法分享的专有代码 但我认为我已经能够提取一个简单的测试用例来演示该问题 这是 g 的输出 template eg cpp In instantiation o
  • OpenCV Visual Studio ntdll.dll

    我尝试在 Visual Studio 2013 上使用 OpenCV 2 4 10 创建一个项目 但由于以下异常 到目前为止我运气不佳 请建议帮助 TIA letstryitonemoretime exe Win32 Loaded C Us
  • 将指针转换为浮点数?

    我有一个unsigned char 通常 这指向一块数据 但在某些情况下 指针就是数据 即 铸造一个int的价值unsigned char 指针 unsigned char intData unsigned char myInteger 反
  • 使用 Selenium for C# 登录 Facebook

    我一直在使用 Selenium C 框架并尝试进行 facebook 登录 但没有任何运气 这是我到目前为止得到的 基于这篇文章 使用 Selenium 测试 Facebook Connect 应用程序 https stackoverflo
  • 异步方法中的异常未被捕获

    下面的代码没有捕获我的OperationCancelEException 它是通过调用抛出的ct ThrowIfCancellationRequested public partial class TitleWindow Window IA
  • 将列表(对象)转换为列表(字符串)

    有没有办法转换List of Object to a List of String 在 c 或 vb net 中而不迭代所有项目 幕后迭代很好 我只想要简洁的代码 Update 最好的方法可能就是进行新的选择 myList Select f
  • 液体字符串中的转义字符

    我正在尝试将包含各种尺寸的标签列表放在一起 在 Shopify 中使用 Liquid 尺寸使用单引号和双引号表示英寸和英尺 因为它同时使用两者 所以会导致字符串正确关闭的问题 我尝试过使用标准转义字符 但这似乎不起作用 是否可以在 Liqu
  • 返回指向 std::vector 中的对象的 a

    我有一个关于返回对向量元素的引用的非常基本的问题 有一个向量vec存储类的实例Foo 我想访问这个向量中的一个元素 不想使用向量索引 我应该如何编码该方法getFoo here include
  • C++ 私有静态成员变量

    此 C 代码在编译时产生链接器错误 A h class A public static void f private static std vector
  • async wait 在调用异步方法时返回 Task> 而不是 List

    我正在尝试了解 async wait 的用法 并且研究了一些博客文章 现在我已经编写了一个测试代码 但它没有按照我期望的方式工作 我有一个返回列表的方法 private List
  • 如何在 C++ 中对静态缓冲区执行字符串格式化?

    我正在处理一段对性能要求非常高的代码 我需要执行一些格式化的字符串操作 但我试图避免内存分配 甚至是内部库的内存分配 在过去 我会做类似以下的事情 假设是 C 11 constexpr int BUFFER SIZE 200 char bu
  • 获取给定EntityType的导航属性

    我在用VS2010 EF4 0 需要如下功能 private string GetNaviProps Type entityType eg typeof Employee NorthwindEntities en new Northwind
  • 如何用C++解析复杂的字符串?

    我试图弄清楚如何使用 解析这个字符串sstream 和C 其格式为 string int int 我需要能够将包含 IP 地址的字符串的第一部分分配给 std string 以下是该字符串的示例 std string 127 0 0 1 1
  • 无法将方法组“Read”转换为非委托类型“bool”

    我正在尝试使用SqlDataReader检查条目是否存在 如果存在则返回ID 否则返回false 当我尝试编译时 出现错误 无法将方法组 Read 转换为非委托类型 bool 我一直在遵循在 VB 中找到的示例 但似乎翻译可能不正确 pri
  • 使用互斥锁来阻止临界区外部的执行

    我不确定我的术语是否正确 但这里是 我有一个由多个线程使用的函数来写入数据 在注释中使用伪代码来说明我想要的内容 these are initiated in the constructor int data std atomic
  • Qt:将拖放委托给子级的最佳方式

    我在 QWidget 上使用拖放 我重新实现了 DragEnterEvent dragLeaveEvent dragMoveEvent 和 dropEvent 效果很好 在我的 QWidget 中 我有其他 QWidget 子级 我希望它们
  • win32 API 和 .NET 框架之间的选择

    我必须开发一个适用于 Windows 的应用程序 该应用程序将能够通过网络摄像头识别手势来控制鼠标 我将使用 vc 2008 进行开发 但我很困惑是使用 NET 框架还是核心 win32 API 性能对于我的应用程序非常重要 根据 Ivor
  • 如何使用简历实现一个“一网打尽”的异常处理程序?

    我想知道我怎样才能写一个抓住他们全部应用程序级别的异常处理程序将为用户提供恢复应用程序流程的选项 如果您正在运行 Windows 窗体应用程序 将处理程序添加到Application ThreadException event
  • 如何向 ItemsControl 中的 WPF 按钮添加相同的命令

    如何将命令添加到 wpf 按钮 该按钮是ItemsControl并正在修改ItemsSource itself 这是我的 XAML

随机推荐

  • phpcs:如何修改 PSR2 以检查大括号与方法在同一行?

    我现在花了 2 个多小时试图弄清楚如何要求 与方法声明在同一行 而不是默认要求在下一行 我怎样才能完成这件事 我已将 PSR2 标准复制到名为 PSR2 的新文件夹中 以便能够根据自己的喜好对其进行修改 所以我正在研究的基础基本上是我想要修
  • Microsoft.Build.Evaluation 的正确用法是什么?

    我想以编程方式将导入添加到 MSBuild 项目 这个APIMicrosoft Build Evaluation命名空间允许我这样做 我更愿意通过 VS 可扩展性 API 实现相同的结果 但似乎没有任何方法可以做到这一点 所以我求助于这个
  • C++ 编译器可以消除未读取的易失性局部变量吗

    说 我有这个代码 int f volatile int c c 34 return abc The 易失性 int c从来没有读过 但它被标记为volatile 编译器可以完全消除它吗 我在 Visual C 2010 中的测试显示了矛盾的
  • git“松散的对象...已损坏”-我丢失了哪些数据?

    我已经对本地分支做了一些提交 然后我尝试这样做git fetch 它失败并出现以下错误 fatal loose object 7b36029a951eacd979d24e993e020c4d018ca265 stored in git ob
  • HAL 锁定和解锁函数如何使用以及为什么?

    我试图理解另一位程序员编写的代码 它使用了I C http en wikipedia org wiki I C2 B2C通信以将数据写入 STM32 微控制器的 EEPROM 一般来说 我理解他的代码是如何工作的 但我不明白他为什么使用HA
  • UITableView 中的颜色交替 UITableViewCell?

    我试图使用此方法在表视图中为备用 tableCell 着色链接到颜色单元格 http blog apoorvmote com customize uitableviewcell background color ios 8 swift 用这
  • 我可以设置 Vert.x HTTP 请求队列的容量吗?

    我用 Java 编写了一个 Vert x HTTP 服务器 当客户端发送请求的速度快于服务器处理请求的速度时 服务器端请求队列会慢慢填满 最终 JVM 由于所有累积的请求而耗尽内存 我可以设置 Vert x 请求队列的容量吗 我想设置以下一
  • 我应该使用什么 OSX/XCode 版本控制系统来进行 iPhone 开发?

    我一直在兼职开发我的第一个 iPhone 应用程序 并希望开始使用比过去四个月更严格的版本控制形式 即将源代码文件夹复制到另一个目录并为其添加时间戳 我使用过 SourceSafe 和 Team Foundation System 但不太清
  • 导入并运行文件夹中的所有模块

    有没有办法导入并运行文件夹中的所有 py 文件 基本上我认为 pytest 是如何进行测试发现的 似乎我想从文件路径导入到列表中 然后在每个模块上调用 main args 迭代列表 它还需要兼容 python 2 和 3 Example s
  • 变量中 Linq 查询的 Lambda 表达式

    如何定义要在 linq 查询中用作变量的 lambda 表达式 例如 当按列表项的不同属性对通用列表进行排序时 IList
  • 找到Python解释器的完整路径?

    如何从当前执行的 Python 脚本中找到当前运行的 Python 解释器的完整路径 sys executable包含当前运行的Python解释器的完整路径 import sys print sys executable 现在是记录在这里
  • 将 PHP 实体(如 – 或 š)转换为其适用的字符

    有没有办法将 HTML 实体转换为其适用的字符 类似的东西html entity decode 我正在尝试从 TinyMCE 输出中制作没有 HTML 实体的普通文本 根据用户贡献的笔记 http de php net manual en
  • IE11 中的 http 伪流

    我有一些视频 我需要能够找到其中的各个点 而无需在该点之前下载整个视频 到目前为止 我使用带有 NodeJS 的 html5 视频标签和 vid streamer 模块 在 Firefox 和 Chrome 中运行得很好 然而 IE 11
  • 选择数组结束项的最有效方法?

    我正在寻找最有效的方法 即按下较小的键 来索引数组的最后一个元素 然后像 a lt c 1 2 3 n lt length a b lt a n 不应该使用 我想只使用一个命令 在上面的例子中我可以使用 b lt a length a 但我
  • Android 清除/完成之前的活动(除了一项)

    在android中我有以下路径 活动 1 gt 活动 2 gt 活动 3 gt 活动 N gt 按下按钮 当按下按钮时 我想清除 完成从活动 2 到 N 的所有活动 然后转到活动 X 换句话说 我想完成所有活动 直至最初的一个 然后移至另一
  • 在 R 中识别传单中栅格上的点击位置

    我正在绘制一个大型经纬度 NetCDFraster超过一个Rleaflet地图使用shinydashboard 当我单击地图时 会出现一个弹出窗口 显示行 列 经纬度位置和单击的栅格点的值 参见下面的可重现代码 问题是 如果栅格足够大 我会
  • 进度条无法使用带有 Angular cli 的 Service Worker

    我们正在开发 Angular 4 应用程序 并使用 cli 启用服务工作人员 一切都很好 除了文件上传进度条停留在 0 只有完成后才会达到 100 我们怀疑这是由于 Service Worker 造成的 因为我们在开发环境中没有看到它 奇怪
  • 如何使用gcloud命令行部署多个功能?

    我想部署多个云功能 这是我的index js const batchMultipleMessage require gcf 1 const batchMultipleMessage2 require gcf 2 module exports
  • 我可以请求 SQL Server 缓存某个结果集吗?

    某个查询正在从 ASP NET 页面调用 我在 Management Studio 中研究了该查询的执行计划 87 用于排序 我非常需要排序 否则显示的数据将毫无意义 无论如何 我是否可以请求 SQL Server 缓存排序的结果集 以便它
  • 是否可以在不知道c中数组长度的情况下使用gets?

    如果我们想在 c 中使用 gets 我们会这样做 int main void char str 100 while gets str printf s n str 我们必须先知道str的长度 即100 然后使用gets 是否可以在不知道c中