我使用G ++中的标准ftell和fseek选项进入整数溢出,但我想我错了,因为似乎ftell64和fseek64不可用.我一直在搜索,许多网站似乎使用lseek和off64_t数据类型引用,但我没有找到任何引用等于fseek的例子.我现在正在阅读的文件是16GB + CSV文件,期望至少翻倍.
没有任何外部库,实现与fseek/ftell对类似的结构最简单的方法是什么?我的应用程序现在使用4.x的标准GCC/G ++库.
编译调用的代码时收到警告 write()
warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
这是write()的定义:
ssize_t write(int fd, const void *buf, size_t count);
RETURN VALUE
On success, the number of bytes written is returned (zero indicates
nothing was written). On error, -1 is returned, and errno is set
appropriately.
Run Code Online (Sandbox Code Playgroud)
这对我来说很奇怪.假设ssize_t是int,我最终写了一些大的(> 2GB).我不能只使用write()vs count的返回值的比较,可以吗?
(编辑:也许我应该正确地写下我的问题:在没有得到警告的情况下使用write()的正确方法是什么,也不会遇到符号转换后计数== -1的情况?是的,我知道它是未定义的行为)