fseek相关内容

使用带有文件的 fseek(file, 0, SEEK_END) 了解二进制流的未定义行为

C 规范有一个有趣的脚注(#268 C11dr §7.21.3 9) “将文件位置指示器设置为文件结尾,与 fseek(file, 0, SEEK_END) 一样,对于二进制流具有未定义的行为(因为可能出现尾随空字符)或对于任何具有状态相关编码但不一定以初始移位状态结束的流." 这是否适用于读取文件的二进制流?(从物理设备) IMO,磁盘上的二进制文件只是字节的海洋.在我看来,二 ..
发布时间:2022-01-09 19:45:35 其他开发

fseek 在超出 EOF 的位置上使用 feof 不会触发 EOF,这是怎么回事?

我正在将文件中的数据读取到内存中,并使用以下方式打开: FILE *f = fopen(path, "rb"); 在我开始从文件中复制字节之前,我使用: /*** 转到给定文件的给定位置.** - 成功返回 0* - 在 EOF 上返回 -1* - 如果发生错误,则返回 -2,请参阅 errno 以获取错误代码* - 如果以上都不适用,则返回 -3.这不应该发生!*/静态 int8_t go ..
发布时间:2022-01-04 08:38:32 服务器开发

为什么在更新模式下读取和写入之间总是需要 fseek 或 fflush?

问:我正在尝试更新文件放置,通过使用 fopen 模式 "r+",读取某个字符串,并写入返回一个修改过的字符串,但它不是工作. A:一定要先调用fseek你写,既要找回您正在尝试的字符串的开头覆盖,并且因为 fseek或 fflush 之间总是需要的在读/写中读和写“+"模式. 我的问题是为什么 fseek 或 fflush 在读/写“+"模式下的读和写之间总是需要的?第 5.2 节安 ..
发布时间:2021-12-29 12:02:41 其他开发

使用 fseek 逐行向后读取文件

如何使用 fseek 逐行向后读取文件? 代码可能会有所帮助.必须是跨平台和纯php. 非常感谢 问候 杰拉 解决方案 问题在于使用 fseek,所以只能假设性能是一个问题,而 file() 不是解决方案.这是使用 fseek 的简单方法: 我的文件.txt #file.txt1号线2号线3号线4号线5号线 和代码: 输出: array(5) {[ ..
发布时间:2021-12-09 20:29:08 PHP

fseek() 在文件系统中是如何实现的?

这不是一个纯粹的编程问题,但是它会影响使用 fseek() 的程序的性能,因此了解它是如何工作的很重要.一点免责声明,以免被关闭. 我想知道在文件中间插入数据的效率如何.假设我有一个包含 1MB 数据的文件,然后我在 512KB 偏移量处插入了一些内容.与在文件末尾附加我的数据相比,它的效率如何?为了使示例完整,假设我想插入 16KB 的数据. 我知道答案因文件系统而异,但是我认为常见 ..
发布时间:2021-11-17 02:02:05 其他开发

PHP从特定位置附加到文件

在 php 中,我打开一个文本文件并附加到它.但是我需要在文件末尾附加 3 个字符.换句话说,我需要从文件中的特定位置追加/写入. 有人可以帮忙吗? 最好的问候鲁本 解决方案 需要打开文件进行编辑,搜索到想要的位置,然后写入文件,例如: 进一步参考 php.net - fseek doc 希望有所帮助. ..
发布时间:2021-11-16 19:29:34 PHP

追加到 C 中的文件末尾

我正在尝试将文件 myfile.txt 的内容附加到 c 中第二个文件 myfile2.txt 的末尾.我可以复制内容,但找不到追加的方法.这是我的代码: FILE *pFile;文件 *pFile2;字符缓冲区[256];pFile=fopen("myfile.txt", "r");pFile2=fopen("myfile2.txt", r+);如果(pFile==NULL){perror(" ..
发布时间:2021-11-16 19:18:57 其他开发

从使用追加模式打开的文件中读取

这可能是一个非常愚蠢的问题,但是我正在修改其他人的代码,看来我需要从以追加模式打开的文件中读取内容.我试图到文件的开头,但是没有读取任何内容.我知道我可以将模式更改为rw,但是我想知道为什么 fseek 无法正常工作.在手册页中确实写了write忽略了 fseek ,但是与读无关. 解决方案 只有一个指针,该指针最初位于文件的开头,但是当尝试执行写操作时,它将移动到文件的末尾.您可以使用f ..
发布时间:2021-05-07 18:54:36 其他开发

如何从.txt文件中读取已知数量的未知大小的字符串,并将每一行存储在矩阵的一行中(用C表示)?

标题很容易说明.我几乎可以确定最终结果不会是矩阵,因为每一行都有不同的列数,所以它更像是一个大小可变的数组的数组.按大小排序片段,也将是最大的,这也将很有趣.到目前为止,这是我尝试过的: int main(){char str [MAXLEN],** fragmentsList;int number_of_strings,i,max,k;printf(“输入.txt文件名:");scanf(“ ..
发布时间:2021-04-09 20:47:43 其他开发

使用fseek在最后一行之前插入字符串

我正在尝试为blueimp.net的AjaxChat编写一个非常基本的注册模块.我有一个写入用户配置文件的脚本. $userfile = "lib/data/users.php"; $fh = fopen($userfile, 'a'); $addUser = "string_for_new_user"; fwrite($fh, $addUser); fclose($fh); 但是我需要 ..
发布时间:2020-11-11 20:43:05 PHP

C以二进制模式读取/写入文件

我创建了一个4000个块的文件,块大小为4096字节. 现在,我想操作单个块并在不更改文件大小的情况下再次读取它们. 实际上,我想将另一个文件中的块写到我创建的文件中的特定块中. 因此,我将以二进制模式打开文件,如下所示: FILE * storeFile=fopen(targetFile, "wb"); // this one I created before FILE * source ..
发布时间:2020-11-09 20:55:37 其他开发

Windows物理驱动器访问fopen和fseek

我目前正在尝试以C中的二进制数据流的形式访问物理硬盘.我已经安装了映像(.img),并且可以从OS(Win 7)读取. 我的C程序只是尝试以只读二进制模式打开物理驱动器,然后从驱动器中读取一些数据. 但是,如果我只是简单地从流中读取数据而没有寻找任何地方,那一切都很好,我会取回存储在驱动器中的数据,并且由于我位于流中的偏移量0处,所以我能够读取磁盘上的MBR. 但是,如果我尝试f ..
发布时间:2020-11-05 20:26:19 其他开发

fseek函数会在C ++中刷新缓冲区中的数据吗?

我们知道对fprintf或fwrite之类的函数的调用不会立即将数据写入磁盘,而是将对数据进行缓冲,直到达到阈值为止.我的问题是,如果我调用fseek函数,这些缓冲的数据是否会在寻求新位置之前写入磁盘?还是数据仍在缓冲区中,并被写入新位置? cheng 解决方案 我不知道是否保证缓冲区会被刷新,如果您寻找到足够接近的位置则可能不会.但是,无法将缓冲的数据写入新位置.缓冲只是一种优化, ..
发布时间:2020-11-05 20:21:13 C/C++开发

C二进制读写文件

我正在使用一个二进制文件读取整数数组,然后每个偶数x应该变成2 * x,每个奇数x应该变成3 * x.当我这样做时,它总是读取第二个整数(即2).有什么主意吗? #include #include int main(void) { FILE *f; f = fopen("inputData.txt", "w+b"); int n = 5; ..
发布时间:2020-09-20 23:43:38 其他开发

f.seek()在Python中的复杂性

f.seek(500000,0)在到达第500000位数之前是否要遍历文件的所有前499999个字符? 换句话说,f.seek(n,0)是O(n)还是O(1)? 解决方案 您需要更具体地说明对象f是什么类型. 如果f是正常的 io模块对象,文件存储在磁盘上,您必须确定是否要处理: 原始二进制文件对象 缓冲对象,包装原始二进制文件 TextIO对象,包装缓冲区 内存Byte ..
发布时间:2020-09-20 20:47:41 Python

覆盖c中的特定行

我在程序中生成了大约2000行文本的文件,每一行都包含员工的信息,并且输出如下所示 1 1艾萨克·丰塞卡58 c 1600 1310.40 6 1 0.22 2164.80 1 2 1曼努埃尔·古铁雷斯22 d 1700 1523.37 4 1 0.13 897.26 1 3 1丹尼尔·伯纳尔34 c 1600 1195.84 2 1 0.26 836.16 1 4 1米格尔·冈萨雷斯 ..
发布时间:2020-07-23 01:21:27 其他开发

XML XSLT结果文档fseek

使用XSLT转换,我想将一个XML文件转换成一个HTML文件,该XML文件又代表另一个文件的各个块,并带有指向所代表文件的链接. 输入XML文件: foo.jpg 200 100 ..
发布时间:2020-06-12 19:03:52 其他开发