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\n",buf)//将成功获取的字符串显示在屏幕上;
}
}
fclose(tf)//将已打开的文件关闭;
扩展资料: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语言fopen函数用于打开文件。函数原型:FILE
*
fopen(const
char
*
path,const
char
*
mode)
参数:
path
字符串类型,表示文件所在的路径,包括文件名
mode
打开文件的模式、
返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno
中。
mode:
r
以只读方式打开文件,该文件必须存在。
r+
以可读写方式打开文件,该文件必须存在。
rb+
读写打开一个二进制文件,允许读写数据,文件必须存在。
w
打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+
打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a
以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+
以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。
(原来的EOF符不保留)
wb
只写打开或新建一个二进制文件;只允许写数据。
wb+
读写打开或建立一个二进制文件,允许读和写。
ab+
读写打开一个二进制文件,允许读或在文件末追加数据。
实例:
#include<stdio.h>
#define
F_PATH
"d:\\myfile\\file.dat"
int
main(void)
{
FILE*fp=NULL//需要注意
fp=fopen(F_PATH,"r")
if(NULL==fp)
{
return
-1//要返回错误代码
}
fclose(fp)
fp=NULL//需要指向空,否则会指向原打开文件地址
return
0
}