FILE *f = fopen("path/to/file", "r");
fseek(f, 1, SEEK_SET); // set file pointer to 2nd position (0-indexed)
char part[10] = {0}; // array for 9 characters plus terminating 0
fread(part, 1, 9, f); // read 9 members of size 1 (characters) from f into part
puts(part); // or any other way to output part, like using in printf()
char WBuf[]= "card the red parrots massive belt earth";
printf("WBuf = %s\n",WBuf); // WBuf = card the red parrots massive belt earth
CFile file;
file.Open("test.txt", CFile::modeCreate|CFile::modeNoTruncate|CFile::modeReadWrite);
file.Write(WBuf, sizeof(WBuf));
file.Close();
// read
char RBuf[30] = {0,};
file.Open("test.txt", CFile::modeRead);
file.Seek(1, CFile::begin); // move file pointer 1time from the beginning of the file
file.Read(RBuf, 9); // and then read 9bytes
file.Close();
printf("RBuf = %s\n", RBuf); // RBuf = ard the r
3条答案
按热度按时间6tdlim6h1#
最直接的方法是使用
fseek
,然后使用fread
。为了简单起见,此代码省略了错误检查。fdx2calv2#
这很简单,只需给予一些示例代码:
为此,您需要
#include <stdio.h>
,而在真实的代码中,您必须检查所有返回值中可能发生的错误。如需更多信息,请参阅
fseek()
和fread()
的缐上手册。注意还有很多其他可能的方法,例如,你可以直接 * 读取并忘记 * 第一个字符,而不是 * seek *,例如,使用
fgetc()
.另请参阅Some programmer dude 's comment --对于一个文本文件,从它阅读总是会为每一行结尾给予一个\n
,无论你的操作系统使用什么,而fseek()
操作的是磁盘上的真实的字节,行尾可能被编码为\r\n
(两个字节)。d8tt03nd3#
如果是MFC应用程序,则可以使用CFile: