文件管理 · 2023年11月21日

fopen函数只是把文件目录信息调入内存|C语言中fopen函数打开文件后文件以何种方式读入内存

① c语言fopen怎么用

fopen一般与buf搭配使用,通过与fgets函数配合使用,将文件中的字符串读到buf中,这样达到读出文件内容的目的代码如下:

FILE tf=NULL;//定义一个文件指着,用于判断fopen是否打开成功,并初始化为空;

char buf[1024]={0};//定义一个长度为1024的数组,用于存放文件的内容;

tf=fopen("c:example.txt","r");//打开c盘指定文件,并以只读的形式打开,避免破坏原文件,将fopen的返回值放在指针tf中,若打开成功,则返回成功的指针,打开不成功则返回空;

if(tf != NULL)//判断是否成功,不等于NULL则表示成功;

{

if(fgets(buf,1024,tf) != NULL)//将指向c盘文件的指针的内容赋给buf,长度为1024,并判断是否获取成功;

{

printf("buf=%s",buf);//将成功获取的字符串显示在屏幕上;

}

}

fclose(tf);//将已打开的文件关闭;

(1)fopen函数只是把文件目录信息调入内存扩展阅读:

fopen的工作原理

FILE *fp;

fp=fopen("filename.txt","w");

首先检测filename.txt是否存在,如果不存在则在磁盘 创建该文件,然后在内存开辟区域(应该是缓冲区)准备写该文件

调用fclose时,将内存中的内容写入到磁盘中去

测试(filename.txt不存在):

#include <stdio.h>

#include <stdlib.h>

int main()

{

FILE *fp1,*fp2;

fp1=fopen("filename.txt","w");

if(fp1==NULL)

{

printf("fp1 open failed!/n");

}

else

{

printf("fp1 open success!/n");

}

fp2=fopen("filename.txt","r");

if(fp2==NULL)

{

printf("fp2 open failed!/n");

}

else

{

printf("fp2 open success!/n");

}

fclose(fp1);

fclose(fp2);

return 0;

}

输出:

fp1 open success!

fp2 open success!

说明文件操作不是互斥的,而且以写方式打开文件,如果文件不存在,先在磁盘创建该文件

加入写入语句:

#include <stdio.h>

#include <stdlib.h>

int main()

{

FILE *fp1,*fp2;

fp1=fopen("filename.txt","w");

if(fp1==NULL)

{

printf("fp1 open failed!/n");

}

else

{

printf("fp1 open success!/n");

fputs("abcdef",fp1);

}

fp2=fopen("filename.txt","w");

if(fp2==NULL)

{

printf("fp2 open failed!/n");

}

else

{

printf("fp2 open success!/n");

fputs("ABC/n",fp2);

}

fclose(fp1);

fclose(fp2);

return 0;

}

打开filename.txt文件:

ABC

f

说明后关闭的,刷新了磁盘数据

参考资料来源:fopen-网络

② 求C语言 .NET面试题

面试与被面试总结我从事技术工作,这几年的面试与被面试总结先说我去被面试的经验吧。回答清楚了2个问题,就能顺利过关了。1。为什么要离开上一家公司。2。公司为什么要雇佣你。问第一个问题的是hr(或老板),呵呵 ,即使你技术过关,hr那里没有好的影响,结果是一个字,难!如何回答呢? hr想推论出你在他的公司能呆多久。这个时候,你甚至可以明确告诉他,我在贵公司至少能呆n(n>=1)年—-当然,你没有把握的话,绝对不能乱说,社会上混,要讲信用的。有一次,我就在这个问题上吃了大亏,我看公司环境还不错,就我自做主张回答1年,结果,hr心目中是m(m>=2)年,呵呵,结果可想而知了。要知道,技术面试都过关了,Hr面试是2选1,在回家的路上,我只能祈祷对手自动放弃或找到了其他更好的工作。:)问第二个问题的是技术官。你要让他知道你已经做过哪些商业作品。一定要是商业作品。在里面负责哪方面具体工作,对于你熟悉的地方要多说。最好就是能争取笔试或上机,因为用用口说的话,大家理解都不一样,误差可能很大,结果对你相当不利。在这个问题上我也吃过亏的,曾有一个我很看好的职位,认为把握很大,业务理解上也很有优势,和技术官一谈,结果是game over。要知道,在其他公司的上机和笔试中,我都能在应聘者中取得高分。再说我去面试别人的经验吧。当时,我的任务是出题,给分。若你觉得题很难,那么,请千万不要放弃,显然,你的对手也觉得难。只要坚持,我会认为这人有耐心很毅力,在以后的工作中也是好的合作者。题一定要做完,表现出认真的态度,若有疑问或卡壳,还可以寻求面试官的帮助,这些不会减分,相反,会增加你和他们的接触机会,面试官会评估你的沟通能力。有一次,有1个人来面试,题没有完全ok,但很规范,态度很认真,他把他知道的都做上去了,我给了他技术类的高分。后来,顺利进入公司,再后来进步很快,成了重要角色。若文章对你有帮助的话,请在此讨论。祝你成功面试题1.链表和数组的区别在哪里? 2.编写实现链表排序的一种算法。说明为什么你会选择用这样的方法? 3.编写实现数组排序的一种算法。说明为什么你会选择用这样的方法? 4.请编写能直接实现strstr()函数功能的代码。 5.编写反转字符串的程序,要求优化速度、优化空间。 6.在链表里如何发现循环链接? 7.给出洗牌的一个算法,并将洗好的牌存储在一个整形数组里。 8.写一个函数,检查字符是否是整数,如果是,返回其整数值。(或者:怎样只用4行代码 ,编写出一个从字符串到长整形的函数?) 9.给出一个函数来输出一个字符串的所有排列。 10.请编写实现malloc()内存分配函数功能一样的代码。 11.给出一个函数来复制两个字符串A和B。字符串A的后几个字节和字符串B的前几个字节重叠。 12.怎样编写一个程序,把一个有序整数数组放到二叉树中? 13.怎样从顶部开始逐层打印二叉树结点数据?请编程。 14.怎样把一个链表掉个顺序(也就是反序,注意链表的边界条件并考虑空链表)? 另外:一、单项选择题:(共12题,每题2分,共24分) 1. 下面哪一个不是C++的标准数据类型? ( D) A. int B. charC. bool D. real2. break关键字在哪一种语法结构中不能使用? (C) A. for语句 B. switch语句C. if语句 D. while语句 3. 类的继承方式有几种? (B ) A. 两种 B. 三种C. 四种 D. 六种4. extern关键字的作用是什么? (D)A. 声明外部链接 B. 声明外部头文件引用C. 声明使用扩展C++语句 D. 声明外部成员函数、成员数据。5. C库函数strstr的功能是? (A )A. 查找子串 B. 计算字符串长度C. 字符串比较 D. 连结字符串 6. stl::deque是一种什么数据类型? (A )A. 动态数组 B. 链表C. 堆栈 D. 树 7. STL库里含有下面的哪一种泛型算法? (D )A. KMP查找 B. 折半查找C. 冒泡排序 D. 快速排序 8. 现在最快且最通用的排序算法是什么? (A )A. 快速排序 B. 冒泡排序C. 选择排序 D. 外部排序9. Win32下的线程的哪一种优先级最高? ( C)A. THREAD_PRIORITY_HIGHEST 高优先级B. THREAD_PRIORITY_IDLE 最低优先级,仅在系统空闲时执行C. THREAD_PRIORITY_TIME_CRITICAL 最高优先级D. THREAD_PRIORITY_ABOVE_NORMAL 高于普通优先级10. 下面四个选项中,哪一个不是WinMain函数的参数? (D )A. HINSTANCE B. INTC. LPSTR D. WPARAM 11. VC++的编译器中,运算符new底层的实现是什么? (B )A. VirtualAlloc() B. HeapAlloc()C. GlobalAlloc() D. AllocateUserPhysicalPages() 12. 下面哪一本C++参考书最厚? ( C)A. 《Think in C++》 B. 《深入浅出MFC》C. 《C++ Primer》 D. 《Effective C++》 13. 当调用Windows API函数InvalidateRect,将会产生什么消息(A) A. WM_PAINT B. WM_CREATE C. WM_NCHITTEST D. WM_SETFOCUS 14. 关于virtual void Draw()=0,下面说法正确的有几个(C) (1)它是纯虚函数(对)(2)它在定义它的类中不能实现(对)(3)定义它的类不可实例化(对)(4)如果一个类要继承一个ADT类,必须要实现其中的所有纯虚函数(错)//可以不实现,派生之后的类仍旧作为一个抽象类.A. 1 B. 2C. 3 D. 4二、不定项选择题:(共6题,每题3分,共18分,多选、错选、漏选均不给分)1. vector::iterator重载了下面哪些运算符? (ACD) A. ++ B. >>C. *(前置) D. == 2. CreateFile( )的功能有哪几个? (AB )A. 打开文件 B. 创建新文件C. 文件改名 D. 删除文件3. 下面哪些是句柄(HANDLE)? (ABCD )A. HINSTANCE 实例句柄B. HWND 窗口句柄C. HDC 设备描述符号句柄 D. HFONT 字体句柄4. 下面哪些不是OpenGL标准几何元素的绘制模式? (A )A. GL_FOG B. GL_LINE_STRIPC. GL_POINTS D. GL_TRIANGLE_FAN 5. 下面哪些运算符不能被重载? (ABD )A. 做用域运算符“::” B. 对象成员运算符“.”C. 指针成员运算符“->” D. 三目运算符“? :” 6. 下面哪些人曾参与了世界上第一个C++编译器的开发? ( )A. Bill Gates B. Stanley LippmanC. Anderson Hejlsberg D. Bjarne Stroustrup7. 以下说法正确的是? ( ABC)A. 头文件中的 ifndef/define/endif 是为了防止该头文件被重复引用。B. 对于#include <filename.h> ,编译器从标准库路径开始搜索 filename.h 对于#include “filename.h” ,编译器从用户的工作路径开始搜索 filename.hC. C++语言支持函数重载,C语言不支持函数重载。函数被C++编译后在库中的名字与C 语言的不同。假设某个函数的原型为: void foo(int x, int y); 该函数被C编译器编译后在库中的名字为_foo,而C++编译器则会产生像_foo_int_int之类的名字。C++提供了C连接交换指定符号extern“C”来解决名字匹配问题。D. fopen函数只是把文件目录信息调入内存。//错,fopen是把整个文件读入内存三、填空题:(共8题,每题3分,共24分)1. 一个大小为320 X 192,颜色为灰度索引色的设备相关位图有______字节。如果此位图颜色为24位真彩色,则它的大小有______字节。2. Windows API的中文意义是____ windows应用程序接口___。3. 计算反正弦的库函数是__asin()____;计算浮点数绝对值的库函数是__fabs()____;计算浮点数n次方的库函数是__pow()____;将浮点数转化为字符串的库函数是___fcvt()___。4. 如果i等于5,那么( ++i ) – -的返回值是__6__。5. API LoadBitmap()的功能是从__指定的模块和或应用程序实例__中读取位图数据到内存。6. new和__delete___对应,malloc和_free___对应,他们之间_ 不能__交叉混用。calloc的功能是__为数组动态分配内存___,realloc的功能是_改变原有内存区域的大小_。7. SendMessage和PostMessage都会向窗体发送一个消息,但SendMessage__将一条消息发送到指定窗口,立即处理__而PostMessage__将一条消息投递到指定窗口的消息队列,不需要立即处理___。8. 输出指定圆心、半径、边数的圆上的点:const int nCount = 12;const double dOrgX = 5.0,dOrgY = 3.0;const double dRadius = 2.0;for( int i = 0; i < nCount; i++ ){double dAngle = M_PI * 2.0 / (double)nCount * i;cout << "第" << i << "点:X = " << ________; cout << ", Y = " << __________ << endl;}三、判断题:(共12题,每题2分,共24分)1. 一个类必须要有一个不带参数的构造函数。 错2. 你不能写一个虚的构造函数。 对3. 类里面所有的函数都是纯虚函数时才是纯虚类。 错4. const成员函数对于任何本类的数据成员都不能进行写操作。 对5. 函数中带默认值的参数必须位于不带默认值的参数之后。 对6. char *p = "Test"; p[0] = 'R'; 错7. cout << "Test"; 对8. stl::list不支持随机访问叠代器。 对9. stl::vector的效率比stl::list高。 错10. VC和VC++是一回事,而VC++是一种比C++更难一些的语言。 错11. 理论上,new和malloc造成的内存泄露都会由操作系统回收。 错 12. 在C++中struct和class的差别很大,所以从语法上不能混用。对四、简述题(共3题,每题5分,共15分) 1. 请简述PeekMessage和GetMessage的区别。答: Peekmessage和Getmessage都是向系统的消息队列中取得消息,两个函数的不同在于取不到消息的时候,若Getmessage()向消息队列中取不到消息,则程序的主线程会被OS(操作系统)挂起,等到有合适的消息时才返回;若是用Peekmessage()在消息队列中取不到消息,则程序会取得OS控制权,运行一段时间。另外,在处理消息的时候,GetMessag()会将消息从队列中删除,而PeekMessage()可以设置最后一个参数wRemoveMsg来决定是否将消息保留在队列中。2. 请列出你所知道的在Windows SDK平台上,实现计时功能的方法。答:可以使用SetTimer函数创建一个计时器,SetTimer的函数原型如下:UINT_PTR SetTimer( HWND hWnd, UINT_PTR nIDEvent, UINT uElapse, TIMERPROC lpTimerFunc 3. 请简述你所知道的const的各种用法。答: const 常量const 修饰类的数据成员const 修饰指针const 应用在函数声明中const 应用在类成员函数五、编程题:(共3题,第1小题7分,第2小题14分,第3小题24分)1. 深度遍历二叉树。struct Node{Node *Parent;Node *Left, *Right;};void Through(Node *Root){}2. 二分法查找。int DicFind( int *Array, int Count, int Value ){}3. 写出字符串类String的默认构造函数、析构函数和重载赋值运算符。已知类String的原型为:class String{public:String( const char *pStr = NULL ); // 默认构造函数~String( void ); // 析构函数String &operate = ( const String &Source ); // 重载赋值运算符private:char *m_pData; // 指向字符串的指针};

③ c语言fopen()和fclose()的使用

fp=fopen("CLIB", "rb");/*打开当前目录名为CLIB的文件只读*/ 问题在这一行里,当前目录就是程序文件所在的目录,这个目录里没有这个文件时,fopen函数只是打开没有创建文件改成fp=fopen("CLIB.txt", "rb");在TurboC for Windows里运行时有结果:File open errorFile close error创建个CLIB.txt,再次运行时会输出O,K但我用TurboC2.0也是没有任何结果!

④ C语言Fopen函数的用法

fopen函数用来打开一个文件,其调用的一般形式为:文件指针名=fopen(文件名,使用文件方式);其中,“文件指针名”必须是被说明为FILE 类型的指针变量;“文件名”是被打开文件的文件名;“使用文件方式”是指文件的类型和操作要求。“文件名”是字符串常量或字符串数组。例如:FILE *fp;fp=("file a","r");其意义是在当前目录下打开文件file a,只允许进行“读”操作,并使fp指向该文件。又如:FILE *fphzkfphzk=("c:\\hzk16","rb")其意义是打开C驱动器磁盘的根目录下的文件hzk16,这是一个二进制文件,只允许按二进制方式进行读操作。两个反斜线“\\ ”中的第一个表示转义字符,第二个表示根目录。使用文件的方式共有12种,下面给出了它们的符号和意义。文件使用方式意义“rt”只读打开一个文本文件,只允许读数据“wt”只写打开或建立一个文本文件,只允许写数据“at”追加打开一个文本文件,并在文件末尾写数据“rb”只读打开一个二进制文件,只允许读数据“wb”只写打开或建立一个二进制文件,只允许写数据“ab”追加打开一个二进制文件,并在文件末尾写数据“rt+”读写打开一个文本文件,允许读和写“wt+”读写打开或建立一个文本文件,允许读写“at+”读写打开一个文本文件,允许读,或在文件末追加数据“rb+”读写打开一个二进制文件,允许读和写“wb+”读写打开或建立一个二进制文件,允许读和写“ab+”读写打开一个二进制文件,允许读,或在文件末追加数据对于文件使用方式有以下几点说明:1) 文件使用方式由r,w,a,t,b,+六个字符拼成,各字符的含义是:r(read): 读w(write): 写a(append): 追加t(text): 文本文件,可省略不写b(banary): 二进制文件+: 读和写2) 凡用“r”打开一个文件时,该文件必须已经存在,且只能从该文件读出。3) 用“w”打开的文件只能向该文件写入。若打开的文件不存在,则以指定的文件名建立该文件,若打开的文件已经存在,则将该文件删去,重建一个新文件。4) 若要向一个已存在的文件追加新的信息,只能用“a”方式打开文件。但此时该文件必须是存在的,否则将会出错。5) 在打开一个文件时,如果出错,fopen将返回一个空指针值NULL。在程序中可以用这一信息来判别是否完成打开文件的工作,并作相应的处理。因此常用以下程序段打开文件:6) if((fp=fopen("c:\\hzk16","rb")==NULL){printf("\nerror on open c:\\hzk16 file!");getch();exit(1);}这段程序的意义是,如果返回的指针为空,表示不能打开C盘根目录下的hzk16文件,则给出提示信息“error on open c:\ hzk16 file!”,下一行getch()的功能是从键盘输入一个字符,但不在屏幕上显示。在这里,该行的作用是等待,只有当用户从键盘敲任一键时,程序才继续执行,因此用户可利用这个等待时间阅读出错提示。敲键后执行exit(1)退出程序。7) 把一个文本文件读入内存时,要将ASCII码转换成二进制码,而把文件以文本方式写入磁盘时,也要把二进制码转换成ASCII码,因此文本文件的读写要花费较多的转换时间。对二进制文件的读写不存在这种转换。8) 标准输入文件(键盘),标准输出文件(显示器),标准出错输出(出错信息)是由系统打开的,可直接使用。

⑤ 如何用C语言fopen函数实现这样的文件打开功能

部分方法:fopen的函数原型:FILE * fopen(const char * path,const char * mode);fopen函数的第一个参数是文件路径,第二个参数是打开方式,有以下几种方式:r 以只读方式打开文件,该文件必须存在。r+ 以可读写方式打开文件,该文件必须存在。rb+ 读写打开一个二进制文件,允许读数据。rw+ 读写打开一个文本文件,允许读和写。w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)wb 只写打开或新建一个二进制文件;只允许写数据。wb+ 读写打开或建立一个二进制文件,允许读和写。wt+ 读写打开或着建立一个文本文件;允许读写。at+ 读写打开一个文本文件,允许读或在文本末追加数据。ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。C语言的文件处理的过程是,先声明一个文件指针,然后用fopen函数打开文件,fopen打开文件成功的话返回一个指针该流的文件指针,然后利用指针对文件进行操作就好了,最后完事了在fclose函数关闭流,并释放指向他的指针。例如:要对c:\example.txt的文本文件内容为:ISP,进行操作#include <stdio.h>int main(){char ch;FILE* fp;char fname[50] = "c:\example.txt";fp = fopen(fname,"r"); //只供读取if(fp == NULL) //如果失败了{printf("ERROR!");return 1;}//getc()用于在打开文件中获取一个字符while((ch = getc(fp)) != EOF) //循环获取直至文件结束 EOF标志(End Of File)putchar(ch); //打印获取到的字符fclose(fp); //关闭文件return 0;}希望对你有帮助!

⑥ C语言中调用文件问题

所谓“文件”是指一组相关数据的有序集合。 这个数据集有一个名称,叫做文件名。 实际上在前面的各章中我们已经多次使用了文件,例如源程序文件、目标文件、可执行文件、库文件 (头文件)等。文件通常是驻留在外部介质(如磁盘等)上的, 在使用时才调入内存中来。从不同的角度可对文件作不同的分类。从用户的角度看,文件可分为普通文件和设备文件两种。 普通文件是指驻留在磁盘或其它外部介质上的一个有序数据集,可以是源文件、目标文件、可执行程序; 也可以是一组待输入处理的原始数据,或者是一组输出的结果。对于源文件、目标文件、 可执行程序可以称作程序文件,对输入输出数据可称作数据文件。 设备文件是指与主机相联的各种外部设备,如显示器、打印机、键盘等。在操作系统中,把外部设备也看作是一个文件来进行管理,把它们的输入、输出等同于对磁盘文件的读和写。 通常把显示器定义为标准输出文件, 一般情况下在屏幕上显示有关信息就是向标准输出文件输出。如前面经常使用的printf,putchar 函数就是这类输出。键盘通常被指定标准的输入文件, 从键盘上输入就意味着从标准输入文件上输入数据。scanf,getchar函数就属于这类输入。 从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种。 ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。例如,数5678的存储形式为: ASC码: 00110101 00110110 00110111 00111000 ↓ ↓ ↓ ↓ 十进制码: 5 6 7 8 共占用4个字节。ASCII码文件可在屏幕上按字符显示, 例如源程序文件就是ASCII文件,用DOS命令TYPE可显示文件的内容。 由于是按字符显示,因此能读懂文件内容。 二进制文件是按二进制的编码方式来存放文件的。 例如, 数5678的存储形式为: 00010110 00101110只占二个字节。二进制文件虽然也可在屏幕上显示, 但其内容无法读懂。C系统在处理这些文件时,并不区分类型,都看成是字符流,按字节进行处理。 输入输出字符流的开始和结束只由程序控制而不受物理符号(如回车符)的控制。 因此也把这种文件称作“流式文件”。 本章讨论流式文件的打开、关闭、读、写、 定位等各种操作。文件指针在C语言中用一个指针变量指向一个文件, 这个指针称为文件指针。通过文件指针就可对它所指的文件进行各种操作。 定义说明文件指针的一般形式为: FILE* 指针变量标识符; 其中FILE应为大写,它实际上是由系统定义的一个结构, 该结构中含有文件名、文件状态和文件当前位置等信息。 在编写源程序时不必关心FILE结构的细节。例如:FILE *fp; 表示fp是指向FILE结构的指针变量,通过fp 即可找存放某个文件信息的结构变量,然后按结构变量提供的信息找到该文件, 实施对文件的操作。习惯上也笼统地把fp称为指向一个文件的指针。文件的打开与关闭文件在进行读写操作之前要先打开,使用完毕要关闭。 所谓打开文件,实际上是建立文件的各种有关信息, 并使文件指针指向该文件,以便进行其它操作。关闭文件则断开指针与文件之间的联系,也就禁止再对该文件进行操作。 在C语言中,文件操作都是由库函数来完成的。 在本章内将介绍主要的文件操作函数。 文件打开函数fopen fopen函数用来打开一个文件,其调用的一般形式为: 文件指针名=fopen(文件名,使用文件方式) 其中,“文件指针名”必须是被说明为FILE 类型的指针变量,“文件名”是被打开文件的文件名。 “使用文件方式”是指文件的类型和操作要求。“文件名”是字符串常量或字符串数组。例如: FILE *fp; fp=("file a","r"); 其意义是在当前目录下打开文件file a, 只允许进行“读”操作,并使fp指向该文件。 又如: FILE *fphzk fphzk=("c:\\hzk16',"rb") 其意义是打开C驱动器磁盘的根目录下的文件hzk16, 这是一个二进制文件,只允许按二进制方式进行读操作。两个反斜线“\\ ”中的第一个表示转

⑦ 执行fopen函数打开一个磁盘文件mydata.txt并读取到内存的步骤

推荐看看这个:C语言读取整个文件到内存。

其中有说到,从用fopen函数打开文件(就像这里的mydata.txt)到用fread函数读取到内存的介绍。

⑧ C语言中读入一个.txt 的文件,是不是fopen时就已经将内容全部读入内存了

fopen()函数主要做是:1. 建立一个FILE对象。2. 根据路径在外存中找到描述文件的对象,并根据所找到的对象的信息初始化FILE对象。3. 返回FILE对象的指针。从上可知,调用fopen()函数时,并未将文件的内容读到内存中,而是在文件系统中找到描述该文件的对象,并建立描述该文件的FILE对象。

⑨ C语言中fopen函数打开文件后,文件以何种方式读入内存

打开文件后, 读文件有一个缓冲区, 真正读文件是按块读的。一块多大和内你系统有关。比如读容4K到内存。 然后 程序的读函数, 是从缓冲区去读的。 要读的数据, 在缓冲区里面就直接读到程序。不在, 那么清掉缓冲, 重新读一次文件对应位置。