问题标签 [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.
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 fwrite
s (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.
c - 从 C 重新路由标准输入和标准输出
我想重新打开stdin
and stdout
(也许stderr
当我在它的时候)文件句柄,以便将来调用printf()
orputchar()
或puts()
将转到文件,并且将来调用getc()
and 这样将来自文件。
1) 我不想永久丢失标准输入/输出/错误。我可能想稍后在程序中重用它们。
2)我不想打开新的文件句柄,因为这些文件句柄必须被大量传递或全局传递(不寒而栗)。
3)如果我不能帮助的话,我不想使用任何open()
或其他系统相关的功能。fork()
所以基本上,这样做是否有效:
而且,如果是这样,我怎样才能得到stdin
back 的原始值?我必须将其存储在 a 中FILE *
,然后再将其取回吗?
c - 通过scanf抑制输入中的空格
为了抑制换行,我们使用 %[^\n]。您能否建议在输入中跳过空白的格式应该是什么,即如果我们必须输入“hallo stackflow”。我知道 fgets 和 gets 但我不想使用它们,它们正在制造问题。
c++ - 我可以在“\n”上停止 std::cout 刷新吗?
根据这篇文章\n
,当 std::cout连接到交互式设备(例如终端窗口)时,它会自动刷新。否则(例如,当通过管道传输到文件时)它将完全缓冲,并且只会在.flush()
or上刷新std::endl
。
有没有办法在 Microsoft Visual C++ 中覆盖此行为,以便我可以选择是完全缓冲模式还是行缓冲模式?
.net - 如何获取托管 System.IO.FileStream 的底层 stdio FILE*?
我正在为 C/C++ 库编写一个 .NET 适配器,其中方法“bar”采用常规 stdio FILE*。是否可以构建一个接口,以便托管代码用户可以传递托管(文件)流?那就是没有创建中间缓冲区和代码来管道之间的数据。还有 bar() 读取的假设是否会使事情变得更好?
c - 从 FILE * 中确定(打开的)文件名
给定一个 stdioFILE *
指针,是否有一种方法可以让我发现(打开的)文件的名称?
c - 在 C 中尝试和真正简单的文件复制代码?
这看起来像一个简单的问题,但我在这里没有找到类似的东西。
由于C中没有文件复制功能,所以我们必须自己实现文件复制,但我不喜欢重新发明轮子,即使是这种琐碎的东西,所以我想问云:
- 对于使用 fopen()/fread()/fwrite() 进行文件复制,您会推荐什么代码?
- 对于使用 open()/read()/write() 进行文件复制,您会推荐什么代码?
这段代码应该是可移植的(windows/mac/linux/bsd/qnx/younameit)、稳定、经过时间考验、快速、内存高效等。欢迎进入特定系统的内部以获取更多性能(比如获取文件系统集群大小) .
这似乎是一个微不足道的问题,但例如,CP 命令的源代码不是 10 行 C 代码。
c++ - 包含两者的正确顺序和?
我需要使用系统特定的功能,例如ftello()
(stdio.h
根据 POSIX 标准定义)。我还需要使用标准 C++ 功能,例如std::sprintf()
(cstdio
根据 ISO C++ 标准在 中定义)。
AFAIK,仅包括<cstdio>
不保证定义非标准 C++ 的东西,所以我想我必须包括两者。我很久以前就读过,(例如)使用 gcc 可能存在包含文件顺序的问题。
那么,同时包含<cstdio>
和的正确顺序是什么<stdio.h>
?我正在寻找一种尽可能跨平台的解决方案(至少对于 gcc、suncc、intel C++/linux 和 mingw)。
ruby - $deferr、$defout 的目的是什么以及为什么没有 $defin
为什么有 $deferr、$defout 以及为什么没有 $defin 如果有 $stderr、$stdout 和 $stdin,还有 STDIN、STDOUT 和 STDERR
改变其中任何一个都不会改变其他人
c++ - 我在标准库中遇到编译错误。这是怎么回事?
我正在尝试编译一个未指定的软件,并且在标准头文件中出现错误,例如stdio.h
. 错误大多是未声明的标识符,例如_In_
. IntelliSense 发现它们的定义很好。我应该在什么大方向上寻找造成这种情况的原因?
补充:例如,在一个 cpp 文件stdio.h
中包含第一个文件 - 在它之前没有我可以看到的定义。不使用预编译头文件。我安装的其他东西编译得很好。