int fseek(FILE *stream, long offset, int fromwhere):
这个函数,将文件指针stream移至以fromwhere为基准,偏移offset个字节的位置。常用的fromwhere有SEEK_SET(文件首地址,0),SEEK_CUR(文件指针当前位置, 1),SEEK_END (文件结束位置,2)。
long ftell(FILE *stream):
该函数返回文件指针stream相对于文件首地址的偏移字节数。
可以先利用fseek与ftell求出文件大小,再一次性进行读取。代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
FILE* fp = fopen("a.txt", "r");
char* str;
int len;
fseek(fp, 0, SEEK_END); //指向文件尾地址
len = ftell(fp); //计算文件长度
fseek(fp, 0, SEEK_SET); //恢复至文件指针至首地址
str = (char*)malloc(len * sizeof(char)); //申请文件长度的内存
if(str != NULL)
{
fread(str, len * sizeof(char), 1, fp); //一次性读入
printf("%s", str);
free(str);
}
return 0;
}