在文件流中向后一步 [英] Going backwards by one in file stream
本文介绍了在文件流中向后一步的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
假设我有一个文件指针,如下所示:
file_ptr = fopen("test.txt", "r+");
并且我希望在流中移动时更改每个char
的ASCII值(我是以密码方式执行此操作的,因此如果有更好或更有效的方法,请让我知道)。
我正在尝试对fgetc()
和fputc
使用while(!feof(file_ptr)) {}
循环,但file_ptr
将指向下一个字符,因此我想知道是否可以将其指向后一个点。
基本上,我想知道以下项的文件流等效项:
char* blah="blah blah";
char* index=blah;
index++;/*how to navigate a file stream in this way*/
推荐答案
是:可以使用the fseek
function:
fseek(file_ptr, -1L, SEEK_CUR); // move backwards one character
此外,在fputc
之后和fgetc
之前,您将想要再次调用fseek
:
fseek(file_ptr, 0L, SEEK_CUR); // don't move
只是通知系统您正在读写之间切换,以便它知道正确地刷新所有缓冲区等。(否则,您可能不会实际处于您认为的位置。)
顺便说一句,为了正常工作,您需要以二进制模式而不是文本模式打开文件:
file_ptr = fopen("test.txt", "rb+");
因为否则C中的"Character"定义可能与文件中的"Character"定义不完全匹配(尤其是在涉及行结束时),并且fseek
可能会使您处于后一种定义的中间。
这篇关于在文件流中向后一步的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文