将 setvbuf() 与 STDIN 流结合使用

2023-12-22

我正在编写一个小型 C 程序,它必须接受大于 4096 字节的输入流。

我确实找到了一个推荐使用的帖子设置vbuf() here:

使 fgets 在 Linux 上发出更长的 read() 调用 https://stackoverflow.com/q/3612363

我仍然很难让它发挥作用——这是我正在努力解决的代码片段:

int main(void) 
{ 
#define MAX_STRING_SIZE 7168

char input_string[MAX_STRING_SIZE];

printf( "Input: " );

setvbuf( stdin, NULL, _IONBF, 0 );

fgets( input_string, MAX_STRING_SIZE-1, stdin );

printf( "\n" );
printf( "%s", input_string );
} 

有人成功增加了这个输入缓冲区吗?

我的环境:带有 build-essential 包的 Ubuntu 10.10

Thanks!


现在你正在使用_IONBF, 意思是no缓冲。使用_IOFBF相反可能是一个好的开始(那就是full缓冲)。要增加缓冲区大小,您还需要将大缓冲区大小指定为第四个参数,例如:

setvbuf(stdin, NULL, _IOFBF, 16384);

这会动态分配缓冲区空间。根据情况,您可能希望将缓冲区传递给它:

char mybuffer[32768];

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

将 setvbuf() 与 STDIN 流结合使用 的相关文章

  • 使用 gcc 在 Linux 上运行线程构建块 (Intel TBB)

    我正在尝试为线程构建块构建一些测试 不幸的是 我无法配置 tbb 库 链接器找不到库 tbb 我尝试在 bin 目录中运行脚本 但这没有帮助 我什至尝试将库文件移动到 usr local lib 但这又失败了 任何的意见都将会有帮助 确定您
  • 如何将 std::string& 转换为 C# 引用字符串

    我正在尝试将 C 函数转换为std string参考C 我的 API 如下所示 void GetStringDemo std string str 理想情况下 我希望在 C 中看到类似的东西 void GetStringDemoWrap r
  • 类型中的属性名称必须是唯一的

    我正在使用 Entity Framework 5 并且有以下实体 public class User public Int32 Id get set public String Username get set public virtual
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • 在 Unity 中实现 Fur with Shells 技术

    我正在尝试在 Unity 中实现皮毛贝壳技术 http developer download nvidia com SDK 10 5 direct3d Source Fur doc FurShellsAndFins pdf Fins 技术被
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • 为什么这个字符串用AesCryptoServiceProvider第二次解密时不相等?

    我在 C VS2012 NET 4 5 中的文本加密和解密方面遇到问题 具体来说 当我加密并随后解密字符串时 输出与输入不同 然而 奇怪的是 如果我复制加密的输出并将其硬编码为字符串文字 解密就会起作用 以下代码示例说明了该问题 我究竟做错
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • x:将 ViewModel 方法绑定到 DataTemplate 内的事件

    我基本上问同样的问题这个人 https stackoverflow com questions 10752448 binding to viewmodels property from a template 但在较新的背景下x Bind V
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • 使用特定参数从 SQL 数据库填充组合框

    我在使用参数从 sql server 获取特定值时遇到问题 任何人都可以解释一下为什么它在 winfom 上工作但在 wpf 上不起作用以及我如何修复它 我的代码 private void UpdateItems COMBOBOX1 Ite
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • C# 使用“?” if else 语句设置值这叫什么

    嘿 我刚刚看到以下声明 return name null name NA 我只是想知道这在 NET 中叫什么 是吗 代表即然后执行此操作 这是一个俗称的 条件运算符 三元运算符 http en wikipedia org wiki Tern
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置

随机推荐

  • 使用 PHP 过滤 XML 文件

    我想加载 XML 文件 然后删除所有
  • 任务“:bootRun”执行失败。 > 进程“命令”C:\Program Files\Java\jdk-9.0.4\bin\java.exe'' 已完成,退出值非零 1

    我一直在到处寻找如何解决这个问题 我发现了类似的问题 并尝试了一切 但没有任何帮助 重新安装 Java 和 gradle 没有帮助 这里是错误的堆栈跟踪 Task bootRun Spring Boot
  • mongo 的简短用户友好 ID

    我正在创建一个实时股票交易系统 并希望为用户提供一种人类可读 用户友好的方式来参考他们的订单 例如 ID 的长度应为 8 个字符 并且仅包含大写字符 例如Z9CFL8BA 由于显而易见的原因 id 在系统中需要是唯一的 我使用 MongoD
  • 通过 emacs -nw 打开多个垂直分割的文件

    Using emacs nw file1 file2我可以一次打开多个文件 然而 emacs 将以水平分割方式打开它们 有没有办法将默认分割行为设置为垂直 我看过 切换窗口分割 http www emacswiki org emacs To
  • Micronaut:如何获取 Prometheus 格式的指标?

    我应该如何配置 Micronaut 才能获得 metrics普罗米修斯格式 Used 微型机器人1 0 0 M3 Now micronaut metrics enabled true export prometheus enabled tr
  • 如何在swift中编写通用工厂方法?

    我不知道如何 如果可能的话 编写调用从常见已知基类 继承的泛型类型的构造函数的方法 以创建 T 的一些实例 而无需求助于显式工厂函数 即使用所有花哨的功能由类型推断提供 在操场上运行的示例 Let there be classes MyPo
  • JavaFx PieChart:控制大小

    我是 JavaFX 新手 我正在调整用 JavaFX 开发的应用程序 该应用程序使用大量彼此相邻的饼图 所有饼图都作为同一饼图的子项HBox 这些图表没有相同数量的类别 并且由于某种原因 其中一些类别变得比其他类别更大 有什么办法可以控制它
  • WebApi 上的 AngularJS 和 OWIN 身份验证

    我已经在我的 WebApi 上实现了基于 OWIN 令牌的身份验证 我还通过调用启用了 CORSapp UseCors Microsoft Owin Cors CorsOptions AllowAll 我可以从 angularjs Web
  • `create_task()` 中的任务何时在 asyncio 中执行?

    在下面的代码中 import asyncio async def task func print in task func return the result async def main loop print creating task
  • Sublime Text多光标快捷方式

    我是 emacs 的忠实用户 我非常喜欢这样一个事实 无需使用鼠标即可完成所有操作 我认为这个功能让 emacs 非常高效 我也是 Linux 上的 Sublime Text 的忠实粉丝 我喜欢您启用的多光标功能Ctrl left mous
  • 动态父浮动div 100%高度没有绝对位置?

    我在这里读了很多书 但找不到我的答案的解决方案 我有一个容器 div 有多个浮动的左 div 如下面的 html 所示 div class catbg0 div class catb1 div div class catb2 Board N
  • 如何使用 Excel 公式仅删除前导和尾随空格,同时在单词之间保留空格?

    在Excel中 TRIM 将删除文本前后的所有空格 同时还会删除单词之间的任何重复空格 是否有一个公式或其组合可以起到相同的作用TRIM 但在单词之间保留空格 在下面的示例中 我正在寻找一个可以实现虚构公式 WXYZ 的公式 TRIM Om
  • 单击“查看更多”按钮后文本视图会展开或收缩

    在我的 tableView 单元格中 我有一个 textView 我通过 JSON 获取其字符串并动态更新单元格高度 如下所示 func tableView tableView UITableView heightForRowAt inde
  • 搜索 NSString 是否包含值

    我有一些由几个字符构造的字符串值 我想检查它们是否存在于另一个 NSString 中 不区分大小写和空格 示例代码 NSString me toBe NSString target abcdetoBe than check if me is
  • 定义 JavaScript 源文件的字符编码

    我想向我的德国用户打印一条状态消息 其中包含变音符号 我还希望它们位于源文件中 而不必仅为消息下载和解析一些额外的文件 但是 我似乎找不到一种方法来定义 JS 源文件的编码 有没有类似HTML的东西http equiv 或者我应该在 HTT
  • PyTorch:用于训练和测试/验证的不同前向方法

    我目前正在尝试延长a model https github com microsoft MASS这是基于 FairSeq PyTorch 的 在训练过程中 我需要训练两个编码器 一个使用目标样本 另一个使用源样本 所以当前的forward函
  • 将 QPair 转换为 QVariant

    我有以下问题 我想通过TCP传输数据 并为此编写了一个函数 为了获得最大的可重用性 函数模板是f QPair
  • 在 C++ 中进行事件处理的正确方法是什么?

    我有一个应用程序需要按以下方式响应某些事件 void someMethodWithinSomeClass while true wait for event if event SomeEvent doSomething continue i
  • 在 Scala 中初始化通用变量

    如何在 Scala 中声明泛型变量而不对其进行初始化 或初始化为任何值 def foo T var t T tried null t def foo T var t T null asInstanceOf T t 而且 如果你不喜欢其中涉及
  • 将 setvbuf() 与 STDIN 流结合使用

    我正在编写一个小型 C 程序 它必须接受大于 4096 字节的输入流 我确实找到了一个推荐使用的帖子设置vbuf here 使 fgets 在 Linux 上发出更长的 read 调用 https stackoverflow com q 3