要使用ftell
函数来提高文件的读写效率,可以结合使用fseek
函数来定位文件指针的位置。以下是一个使用ftell
和fseek
实现文件高效读写的示例:
#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "r+");
if (file == NULL) {
perror("Error opening file");
return 1;
}
// 获取文件大小
fseek(file, 0, SEEK_END);
long fileSize = ftell(file);
fseek(file, 0, SEEK_SET);
// 读取文件内容
char *buffer = (char*)malloc(fileSize);
fread(buffer, 1, fileSize, file);
// 修改文件内容
for (int i = 0; i < fileSize; i++) {
buffer[i] = buffer[i] + 1;
}
// 将修改后的内容写入文件
fseek(file, 0, SEEK_SET);
fwrite(buffer, 1, fileSize, file);
fclose(file);
free(buffer);
return 0;
}
在这个示例中,先使用ftell
和fseek
函数获取文件的大小,并根据文件大小动态分配内存。然后读取文件内容到内存中,并修改文件内容。最后将修改后的内容写入文件。
这种方法可以减少文件读写次数,提高文件的读写效率。