问题标签 [stdio]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
13 回答
4248 浏览

c - What is a good programming pattern for handling return values from stdio file writing functions

I'm working on some code that generates a lot of

warnings when compiled with g++, and I'm wondering about the best programming pattern to actually record and handle the return value of a large number of separate sequential fwrites (i.e. not the same fwrite in a loop)

Let's say that the code looks like this at the moment:

I'm currently thinking about something like this, but I may have difficulty cleaning up the file pointer:

I think that approach is clearly better than nesting, which would get too crazy too quick:

Surely there is already an established best-practice pattern for this sort of thing, though?

Of course, as I am mainly looking into this to get rid of the compiler warnings, I could just assign the return value to a dummy variable and ignore it, but I'd like to try doing it the right way first.

Update: I've removed the c++ tag as this code is really just c being compiled using g++, so c based solutions are needed to keep with the rest of the code base.

0 投票
8 回答
146432 浏览

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

我想重新打开stdinand stdout(也许stderr当我在它的时候)文件句柄,以便将来调用printf()orputchar()puts()将转到文件,并且将来调用getc()and 这样将来自文件。

1) 我不想永久丢失标准输入/输出/错误。我可能想稍后在程序中重用它们。

2)我不想打开新的文件句柄,因为这些文件句柄必须被大量传递或全局传递(不寒而栗)。

3)如果我不能帮助的话,我不想使用任何open()或其他系统相关的功能。fork()

所以基本上,这样做是否有效:

而且,如果是这样,我怎样才能得到stdinback 的原始值?我必须将其存储在 a 中FILE *,然后再将其取回吗?

0 投票
2 回答
353 浏览

c - 通过scanf抑制输入中的空格

为了抑制换行,我们使用 %[^\n]。您能否建议在输入中跳过空白的格式应该是什么,即如果我们必须输入“hallo stackflow”。我知道 fgets 和 gets 但我不想使用它们,它们正在制造问题。

0 投票
3 回答
5326 浏览

c++ - 我可以在“\n”上停止 std::cout 刷新吗?

根据这篇文章\n,当 std::cout连接到交互式设备(例如终端窗口)时,它会自动刷新。否则(例如,当通过管道传输到文件时)它将完全缓冲,并且只会在.flush()or上刷新std::endl

有没有办法在 Microsoft Visual C++ 中覆盖此行为,以便我可以选择是完全缓冲模式还是行缓冲模式?

0 投票
3 回答
289 浏览

.net - 如何获取托管 System.IO.FileStream 的底层 stdio FILE*?

我正在为 C/C++ 库编写一个 .NET 适配器,其中方法“bar”采用常规 stdio FILE*。是否可以构建一个接口,以便托管代码用户可以传递托管(文件)流?那就是没有创建中间缓冲区和代码来管道之间的数据。还有 bar() 读取的假设是否会使事情变得更好?

0 投票
3 回答
751 浏览

c - 从 FILE * 中确定(打开的)文件名

给定一个 stdioFILE *指针,是否有一种方法可以让我发现(打开的)文件的名称?

0 投票
7 回答
12114 浏览

c - 在 C 中尝试和真正简单的文件复制代码?

这看起来像一个简单的问题,但我在这里没有找到类似的东西。

由于C中没有文件复制功能,所以我们必须自己实现文件复制,但我不喜欢重新发明轮子,即使是这种琐碎的东西,所以我想问云:

  1. 对于使用 fopen()/fread()/fwrite() 进行文件复制,您会推荐什么代码?
    • 对于使用 open()/read()/write() 进行文件复制,您会推荐什么代码?

这段代码应该是可移植的(windows/mac/linux/bsd/qnx/younameit)、稳定、经过时间考验、快速、内存高效等。欢迎进入特定系统的内部以获取更多性能(比如获取文件系统集群大小) .

这似乎是一个微不足道的问题,但例如,CP 命令的源代码不是 10 行 C 代码。

0 投票
6 回答
3757 浏览

c++ - 包含两者的正确顺序?

我需要使用系统特定的功能,例如ftello()stdio.h根据 POSIX 标准定义)。我还需要使用标准 C++ 功能,例如std::sprintf()cstdio根据 ISO C++ 标准在 中定义)。

AFAIK,仅包括<cstdio>不保证定义非标准 C++ 的东西,所以我想我必须包括两者。我很久以前就读过,(例如)使用 gcc 可能存在包含文件顺序的问题。

那么,同时包含<cstdio>和的正确顺序是什么<stdio.h>?我正在寻找一种尽可能跨平台的解决方案(至少对于 gcc、suncc、intel C++/linux 和 mingw)。

0 投票
1 回答
226 浏览

ruby - $deferr、$defout 的目的是什么以及为什么没有 $defin

为什么有 $deferr、$defout 以及为什么没有 $defin 如果有 $stderr、$stdout 和 $stdin,还有 STDIN、STDOUT 和 STDERR

改变其中任何一个都不会改变其他人

0 投票
7 回答
3634 浏览

c++ - 我在标准库中遇到编译错误。这是怎么回事?

我正在尝试编译一个未指定的软件,并且在标准头文件中出现错误,例如stdio.h. 错误大多是未声明的标识符,例如_In_. IntelliSense 发现它们的定义很好。我应该在什么大方向上寻找造成这种情况的原因?

补充:例如,在一个 cpp 文件stdio.h中包含第一个文件 - 在它之前没有我可以看到的定义。不使用预编译头文件。我安装的其他东西编译得很好。