本文主要介绍了C语言中fopen()函数和fdopen()函数的详细说明,并关注了两者在指针函数方面的差异。有需要的可以参考一下。
C fopen()函数:打开一个文件,返回文件指针。
头文件:
#包含stdio.h
Fopen()是以指定方式打开文件的常用函数。它的原型是:
FILE * fopen(const char * path,const char * mode);
[参数] path是包含路径的文件名,mode是文件打开模式。
模式有以下几种方式:
在POSIX系统中,当包含Linux时,B字符将被忽略。fopen()创建的新文件将拥有权限s _ IR usr | s _ iwusr | s _ IR grp | s _ iroth | s _ iwoth(0666),这个文件权限也将引用umask值。
二进制和文本模式的区别:
在windows系统中,在文本模式下,单词“\r\n”表示文件的换行符。如果您以文本模式打开文件,并用函数(如fputs)写入换行符' \n ',该函数将自动在' \n '前添加' \r '。也就是说,' \r\n '实际上被写入文件。
在Unix/Linux类系统的文本模式中,' \n '代表文件的换行符。所以Linux系统中文本模式和二进制模式没有区别。
更多内容请看:C语言fopen()打开文本文件和二进制文件的区别。
有些C编译系统可能不完全提供这些功能,有些C版本用' RW ',' W ',' A '代替' R ',' WR ',' AR '等。读者应注意所用系统的规定。
【返回值】文件打开成功后,会返回指向流的文件指针。如果文件无法打开,它将返回NULL,错误代码存储在errno中。
注意:一般来说,打开一个文件后,会采取一些动作来读取或写入该文件。如果打开文件失败,后续的读写动作将无法顺利进行,请做出错误判断,并在fopen()后处理。
文件操作完成后,需要关闭文件。一定要注意,否则文件占用的内存会泄露,下次访问文件时会出现问题。
文件关闭后,需要将文件指针指向null。这样做可以防止自由指针的出现,给整个项目造成不必要的麻烦,比如fp=NULL。
[示例]打开并关闭一个文件。
# includestdio.h
#includestring.h
#includestdlib.h
int main()
{
FILE * fstream
char msg[100]='你好!我读过这份文件。
fstream=fopen('test.txt ',' at ');
if(fstream==NULL)
{
printf('打开文件test.txt失败!\ n’);
出口(1);
}
其他
{
printf('打开文件test.txt成功!\ n’);
}
fclose(fstream);
返回0;
}
函数:文件描述符被转换成一个文件指针。
头文件:
#包含stdio.h
定义功能:
FILE * fdopen(int fildes,const char * mode);
函数描述:fdopen()会将参数fildes的文件描述符转换成对应的文件指针并返回。
模式字符串表示文件指针的流动模式,该模式必须与原始文件描述符的读写模式相同。模式字符串格式请参考fopen()。
返回值:如果转换成功,将返回指向流的文件指针。如果转换不成功,将返回NULL,错误代码将存储在errno中。
模型
#包含stdio.h
主()
{
FILE * fp=fdopen(0,' w ');
fprintf(fp,' %s\n ',' hello!');
fclose(FP);
}
执行
你好!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。