要使用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
函數獲取文件的大小,并根據文件大小動態分配內存。然后讀取文件內容到內存中,并修改文件內容。最后將修改后的內容寫入文件。
這種方法可以減少文件讀寫次數,提高文件的讀寫效率。