stdio相关内容

对于 HANDLE,是否有与 fdopen 等效的 Windows?

在 Unix 中,如果您有一个文件描述符(例如来自套接字、管道或从您的父进程继承),您可以使用 FILE* 在其上打开一个缓冲的 I/O FILE* 流a href="http://linux.die.net/man/3/fdopen">fdopen(3). Windows 上是否有 HANDLE 的等效项?如果您有一个从父进程继承的 HANDLE(不同于 stdin、stdout 或 st ..
发布时间:2021-12-17 23:43:54 其他开发

使用 C 在文本文件中返回随机行的最佳方法是什么?

使用 C 在文本文件中返回随机行的最佳方法是什么?它必须使用标准的 I/O 库(),因为它用于 Nintendo DS 自制软件. 说明: 在文件中使用标题来存储行数对我想要做的事情不起作用. 我希望它尽可能随机(最好是每行与其他行被选中的概率相等.) 在程序运行时文件永远不会改变.(这是 DS,所以没有多任务处理.) 解决方案 读取每一行,并使用随机数选择是保留该行还是忽 ..
发布时间:2021-12-09 20:04:33 其他开发

C 中自动标准输出缓冲区刷新的规则是什么?

我只是好奇应该满足哪些条件才能自动刷新 stdout 缓冲区. 首先我很困惑这个伪代码不会每次迭代都打印输出: while (1) {printf("任意文本");睡眠(1);} 但是如果我添加换行符,它会. 经过几次实验后,我发现我的机器上的 stdout 缓冲区已刷新: 当我输入标准输出 1025 个或更多字符时; 当我阅读标准输入时; 当我将换行符放入标准输出时; ..
发布时间:2021-12-02 08:30:05 其他开发

从 C 重新路由标准输入和标准输出

我想重新打开 stdin 和 stdout(也许还有 stderr)文件句柄,以便将来调用printf() 或 putchar() 或 puts() 将转到一个文件,并在以后调用 getc()code> 等将来自一个文件. 1) 我不想永久丢失标准输入/输出/错误.我可能想稍后在程序中重用它们. 2) 我不想打开新的文件句柄,因为这些文件句柄要么被大量传递,要么是全局传递(不寒而栗). ..
发布时间:2021-12-02 08:13:05 其他开发

如何在 C 中读取/解析输入?常见问题

当我尝试读取/解析输入时,我的 C 程序有问题. 帮助? 这是一个常见问题条目. StackOverflow 有许多与在 C 中读取输入相关的问题,答案通常集中在特定用户的特定问题上,而没有真正描绘出整个画面. 这是试图全面涵盖许多常见错误,因此可以通过将它们标记为与此问题重复来回答这一特定问题系列: 为什么最后一行打印了两次? 为什么我的 scanf("%d", ..
发布时间:2021-12-01 23:42:51 其他开发

C++ 中的“printf"与“cout"

printf() 和 cout 在 C++ 中?> 解决方案 我很惊讶这个问题中的每个人都声称 std::cout 比 printf 好得多>,即使问题只是要求差异.现在,有一个区别 - std::cout 是 C++,而 printf 是 C(但是,您可以在 C++ 中使用它,就像 几乎 来自 C) 的任何其他内容.现在,我会在这里诚实;printf 和 std::cout 各有优势. ..
发布时间:2021-12-01 15:41:48 C/C++开发

`fwrite` 在 `fread` 之后不能直接工作吗?

我有一个程序,它使用 stdio 来读取和写入二进制文件.它缓存当前流位置,并且不会查找读/写偏移量是否已经在所需位置. 然而,一个有趣的问题出现了,当读取一个字节并写入下一个字节时,它实际上并没有被写入! 这是一个重现问题的程序: #include int main() {FILE *f = fopen("test.bin", "wb");无符号字符 d[1024] = { 0 } ..
发布时间:2021-09-25 19:58:03 C/C++开发

调用 malloc 的 snprintf,或不调用 malloc 的 snprintf

我需要保证从不调用 malloc 的 snprint 变体. 那是因为这个 snprintf(我们称之为 safe_snprint())将要 从 malloc 失败或死锁的地方调用. 什么更接近真相,1 还是 2? 在 Windows 上,本机 snprintf 可能会调用 malloc.然后 我需要拉开源 snprintf.c 并将其称为 safe_snprintf().或者 ..
发布时间:2021-09-25 19:13:25 其他开发

没有指定库,但 printf 被链接到 C++ 程序?

我有以下代码: #include int main(){printf ("你好世界\n");返回0;} 在Windows 7 x86上使用MSVC++ 10.0,我在命令行编译如下: cl.exe simple.cpp 这将生成 simple.exe(编译器自动调用链接器)并且可执行文件显示“hello world".消息如预期.当我查看带有depends.exe 的可执行文件时,它显示k ..
发布时间:2021-09-18 19:20:31 其他开发

C 标准库角落案例

以下程序是有效的 C 程序吗? #include int main(){fwrite("x", 1, 1, stderr);fflush(stderr);fgetc(stderr);fwrite("y", 1, 1, stderr);返回0;} 请注意,我尝试从 stderr 读取数据. 当我在 Visual C++ 2008 中编译并运行它时,我得到以下输出: xy 这是有道理的. ..
发布时间:2021-09-18 19:16:09 其他开发

C stdio 输入流如何实现行缓冲?

我知道完全缓冲的输入可以通过为可能大于应用程序所需的数据块发出单个 read 系统调用来实现.但我不明白如何在没有内核支持的情况下将行缓冲应用于输入.我想人们必须读取一个数据块然后查找换行符,但如果是这样,那么与完全缓冲有什么区别? 更具体地说: 假设我有一个输入流 FILE* in.关于 stdio 库如何从操作系统检索字节以填充其缓冲区,以下内容之间有什么区别吗? 行缓冲:s ..
发布时间:2021-09-14 19:44:38 服务器开发

是否可以在单个 C 程序中的多个终端窗口上输出?

基本上我想做的是为单个程序提供两个输出终端窗口.一个是显示程序正在执行的操作的日志,第二个是显示值表之类的东西.这些终端的所有输出都将由程序本身生成.这可以用 stdio 在 C 中做吗? 我意识到这可能更适合 GUI 或 ncurses,但我仍然很好奇这是否可以无论如何完成. 编辑:可能还应该提到我在 linux(特别是 xubuntu)上这样做. 解决方案 不是以任何可移植 ..
发布时间:2021-09-05 20:28:37 其他开发

c 中的 scanf 和换行符

我今天刚刚在我的 C 课上做了一个测试,我有理由相信答案可能是不正确的. scanf("%d\n", &x);//计算字符串“54321\n"的表达式 这个想法很简单.找一个整数,把扫描到的数字放在整数变量x对应的内存位置.但是,我认为对 scanf 的调用永远不会终止. 就我而言,对标准 I/O 的所有对 scanf 的调用都会在按下 Enter 键时终止,因此无需在说明符字符串中包含 ..
发布时间:2021-07-16 18:46:19 其他开发

为什么 scanf 在输入无效时陷入无限循环?

在第 5 行中,我读取了一个整数,isint 如果读取的是一个整数则为 1,如果它不是整数则为 0.如果 isint 是 0,我有一个循环要求用户给出一个整数,然后我一直读到用户给出一个整数.我尝试这段代码给出一个字符而不是一个整数,但我有一个无限循环.该程序不会等待提供新的输入.我的代码有什么问题? #include int main(void) {int arg1;//int arg2;in ..
发布时间:2021-07-16 18:42:40 其他开发

如何通过 Rust 中的 stdin 向程序发送输入

我正在尝试用 Rust 编写一个 shell.shell 的功能之一是能够将输入重定向到文件,将文件重定向到输入,以及将程序的输出通过管道传输到另一个程序.我在 std 中使用 run::process_output 函数来运行程序并获取它们的输出,但我不知道如何将输入作为 stdin 发送到程序运行后.有没有办法创建一个直接连接到运行程序的对象,并像在标准输入中输入一样推送输入? 解决方案 ..
发布时间:2021-07-13 20:46:36 其他开发

如何将输出发送到标准错误?

使用它来将输出发送到标准输出: println!("一些输出") 我认为没有相应的宏可以为 stderr 做同样的事情. 解决方案 Rust 1.19 之后 从 Rust 1.19 开始,您可以使用 eprint 和 eprintln 宏: fn main() {eprintln!("这会出现标准错误!, {}", "awesome");} 这最初是在 RFC 1896. ..
发布时间:2021-07-13 20:35:56 其他开发

如何将 STDOUT 捕获到字符串?

输入“hi"放“再见" 到目前为止,我想存储代码的 STDOUT(在这种情况下,hi \nbye 到一个变量中,例如“result"并打印出来) 放入结果 我这样做的原因是我已将 R 代码集成到我的 Ruby 代码中,其输出在 R 代码运行时提供给 STDOUT,但无法在代码内部访问输出以进行一些评估.对不起,如果这令人困惑.所以“puts result"行应该给我打招呼. 解决方案 ..
发布时间:2021-07-11 18:44:22 其他开发

在 Python 中从 os.system() 中的命令重定向 stdio

通常我可以通过改变 sys.stdout 的值来改变 Python 中的标准输出.但是,这似乎只影响 print 语句.那么,有什么方法可以抑制通过 Python 中的 os.system() 命令运行的程序的输出(到控制台)? 解决方案 您可以考虑通过 subprocess.Popen 运行程序,与 subprocess.PIPE 通信,然后将该输出推送到您想要的任何位置,但按原样,os ..
发布时间:2021-06-25 20:32:43 Python

使用 node.js 获取正在运行的进程的 stdin/stdout

我从节点开始一个进程 child_process.spawn 和处理 process.stdout/stderr 数据事件,并写入标准输入. 现在,我的节点应用程序可能会崩溃或停止,当它重新启动时,我通过它的 PID 找到进程,然后我想再次附加到进程的 stdin/stderr/stdout. 有问题的进程可能是任何类似守护进程的程序,所以我无法控制它的行为(例如,我无法设置进程以在收 ..
发布时间:2021-06-21 19:45:34 其他开发