代码如下:
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[])
{
FILE *fp;
fp=fopen("1.txt","r");
if(fp==NULL)
{
printf("can't open this file!");
exit(EXIT_FAILURE);
}
printf("%s \n",fp->_base);
printf("%d \n",fp->_bufsiz);
printf("%d \n",fp->_charbuf);
printf("%d \n",fp->_cnt);
printf("%d \n",fp->_file);
printf("%d \n",fp->_flag);
printf("%s \n",fp->_ptr);
printf("%s \n",fp->_tmpfname);
return 0;
}
测试结果如下:
接下来是一个读取文本内容并输出的程序,使用了fseek,ftell,fread函数。因为作者主要是写GLSL用的,所以函数参数直接传递文件名,而不是一般的命令行形式。
#include <stdio.h>
#include <stdlib.h>
char *ReadTextFile(char *file);//读取文本内容,返回存储内容区域指针
int main(int argc,char *argv[])
{
char *str;
str=ReadTextFile("1.txt");
printf("%s\n",str);
return 0;
}
/****************************************************************/
/** \brief 读取文本内容,并输出。
* \param 参数为文件名
* \return 返回数据区域的指针
* \author:孤月天心
*/
char *ReadTextFile(char *file)
{
int length; //文件的长度
char *base; //用于存储文本内容
FILE *fpp;
fpp=fopen("1.txt","r");
if(fpp==NULL)
{
printf("can't open this file!");
exit(EXIT_FAILURE);
}
fseek(fpp,0,SEEK_END);
length=ftell(fpp);
base=(char *)malloc(sizeof(char)*(length+1));
fseek(fpp,0,SEEK_SET); //将文件指针移至文件头,如无此句则下句复制为空。
length=fread(base,sizeof(char),length,fpp); //将文本内容复制到base所指区域。
base[length]='\0';
fclose(fpp);
return base;
}
测试如下: