|
|
1
163
我倾向于将整个缓冲区作为原始内存块加载到内存中,然后自己进行解析。这样我就可以更好地控制标准库在多个平台上的功能。 这是我用的存根。您可能还需要检查fseek、ftell和fread的错误代码。(为清楚起见省略)。
|
|
2
31
不幸的是,另一个高度依赖操作系统的解决方案是内存映射文件。好处通常包括读取性能,以及减少内存使用,因为应用程序视图和操作系统文件缓存实际上可以共享物理内存。
另一方面,Windows有点棘手,不幸的是,我没有一个编译器在我面前进行测试,但功能是由提供的
|
|
|
3
16
此函数在GNU C库中提供, http://www.gnu.org/software/libc/manual/html_mono/libc.html#index-getdelim-994 示例代码可能看起来很简单
|
|
|
4
7
如果您正在读取特殊文件,如stdin或管道,则无法使用fstat预先获取文件大小。此外,如果正在读取二进制文件,由于嵌入了“\0”字符,fgets将丢失字符串大小信息。读取文件的最佳方法是使用read和realloc:
|
|
|
5
5
|
|
|
6
5
注:这是对上述公认答案的修改。 这里有一种方法,包括错误检查。 我添加了一个大小检查器,当文件大于1 GiB时退出。我这样做是因为程序将整个文件放入一个字符串中,这可能会占用太多内存,导致计算机崩溃。但是,如果您不关心这一点,可以将其从代码中删除。
|
|
|
7
3
如果你正在使用
|
|
|
8
2
刚刚修改了上面接受的答案。
|
|
|
9
1
这是一个非常粗糙的解决方案,因为没有对null进行任何检查。 |
|
|
10
0
|
|
|
11
-1
简单整洁(假设文件中的内容少于10000):
|
|
|
MaPo · Linux,设置锁定ICMP_过滤器选项 1 年前 |
|
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 1 年前 |
|
|
Bobby · 复合字面值总是左值吗? 1 年前 |
|
9-Pin · C: 嵌套结构的堆栈内存分配 1 年前 |