则需要定义一个文件类型指针,如果想以文本方式读取,就以只读的方式 "r" 打开一个文本文件
如果想以只读的方式打开一个二进制的文件,就以方式"rb"打开。例如下面:
FILE fp;
fp = fopen("d:\\hhh\\myfile","r");
然 后读取就可以了
用C语言的风格:FILE fp = fopen("","");
fseek(SEEK_END);//跳到文件尾
int lenth = ftell(fp);//获得文件内部指针位置
lenth就是当前文件大小,如果lenth == -1,则文件为空
主要看你是怎么用,如果仅是读出来,再写到另外一个文件中去,速度不会太慢。
给个演示地址你看看:
>
程序我运行过了,可以找到fopen()函数。你看看是不是你的头文件的路径设置有问题。
另外程序中还有一些问题,
#include <stdioh>
main()
{
int c,i,j;
int a[100];
int p;
FILE fp;
fp=fopen("c:\\abctxt," "w"); /逗号应该写在引号外面/
if(fp!=NULL)
{
for (i=0;i<=100;i++)
fprintf(fp,"%d\t",i);
}
fclose(fp);
return 0;
/下面的语句都是不可能执行到的语句,估计你粘贴的时候漏掉了什么东西,看看下面的语句是不是是属于另外一个函数的/
fp=fopen("c : \\abctxt;" "r"); /引号里的分号改成逗号,且要放在引号外面/
j=0;
while(1)
{
c=getc(fp);
c=a[j++];
}
p=&a[0];
for (j=1;j<100;j++)
if( p>a[j] )
contiune;
else
{
p=&a[j];
}
printf("max=%d",p);
return 0;
}
现在大多数的系统采用分页机制,在打开文件成功后,文件并没有加载进入内存,而是内核生成了一个文件描述符,文件描述符含有一个指向文件indoe结构的指针,在这个结构中存有文件真正的节点信息和位置。当读取的时候,cpu首先判定需要读取的位置是否在内存上,如果再则直接读取(没有所谓的按行读取一说,按行读取不过是找文件中的换行标而已,当读到换行符的时候返回结果),如果不在内存上,则通过内存管理器进行加载,实际上,无论你是读取一个字符还是一行,加载的大小是固定的,比如系统机制是加载1M,当你文件大于1M时也只加载1M,当不够时全部加载。对不不同系统方式不同。(当然系统如果对读文件有特殊的优化也不同),当你读取之后,文件是继续留在内存还是释放,这里有另一套极其复杂的机制在管理。因为在你读第一行和第二行的时间里,还有许多事情在并发的执行。
以上就是关于C语言如何用fopen()读取一个文仵夹中的文件J全部的内容,包括:C语言如何用fopen()读取一个文仵夹中的文件J、C++中怎样获取一个文件的大小,怎样判断一个文件是否为空(文件存在,但是没有内容)、在php中读取大文件,如何提高效率等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)