首页技术fopen和fclose(c++freopen)

fopen和fclose(c++freopen)

编程之家2026-05-21989次浏览

其实fopen和fclose的问题并不复杂,但是又很多的朋友都不太了解c++freopen,因此呢,今天小编就来为大家分享fopen和fclose的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

fopen和fclose(c++freopen)

open和fopen的区别

1. fopen系列是标准的C库函数;open系列是 POSIX定义的,是UNIX系统里的system call。

也就是说,fopen系列更具有可移植性;而open系列只能用在 POSIX的操作系统上。

2.使用fopen系列函数时要定义一个指代文件的对象,被称为“文件句柄”(file handler),是一个结构体;而open系列使用的是一个被称为“文件描述符”(file descriptor)的int型整数。

3. fopen系列是级别较高的I/O,读写时使用缓冲;而open系列相对低层,更接近操作系统,读写时没有缓冲。由于能更多地与操作系统打交道,open系列可以访问更改一些fopen系列无法访问的信息,如查看文件的读写权限。这些额外的功能通常因系统而异。

4.使用fopen系列函数需要"#include<sdtio.h>";使用open系列函数需要"#include<fcntl.h>",链接时要之用libc(-lc)

小结:

fopen和fclose(c++freopen)

总的来说,为了使程序获得更好的可移植性,fopen系列是首选。

c语言文件操作fwrite和fread

fread是C语言标准为中的一个函数。它从一个文件流中读数据,最多读取count个元素,每个元素size字节,如果调用成功返回实际读取到的元素个数,如果不成功或读到文件末尾返回 0。

fwrite是C语言标准库中的一个函数,指向文件写入一个数据块。示例如下:

//读取一个完整的文件

#include<stdio.h>

#include<stdlib.h>

intmain()

{

FILE*pFile;//文件指针

longlSize;//用于文件长度

char*buffer;//文件缓冲区指针

size_tresult;//返回值是读取的内容数量

pFile=fopen("myfile.bin","rb");

if(pFile==NULL){fputs("Fileerror",stderr);exit(1);}//如果文件错误,退出1

//获得文件大小

fseek(pFile,0,SEEK_END);//指针移到文件末位

lSize=ftell(pFile);//获得文件长度

rewind(pFile);//函数rewind()把文件指针移到由stream(流)指定的开始处,同时清除和流相关的错误和EOF标记

//为整个文件分配内存缓冲区

buffer=(char*)malloc(sizeof(char)*lSize);//分配缓冲区,按前面的lSize

if(buffer==NULL){fputs("Memoryerror",stderr);exit(2);}//内存分配错误,退出2

//该文件复制到缓冲区

result=fread(buffer,1,lSize,pFile);//返回值是读取的内容数量

if(result!=lSize){fputs("Readingerror",stderr);exit(3);}//返回值如果不和文件大小,读错误

//terminate//文件终止

fclose(pFile);

free(buffer);

return0;

}综合使用的例子。

#include<stdio.h>

intmain()

{

FILE*pFile;

floatbuffer[]={2.0,3.0,8.0};

pFile=fopen("myfile.bin","wb");//打开文件写操作

fwrite(buffer,1,sizeof(buffer),pFile);//把浮点数组写到文件myfile.bin

fclose(pFile);//关闭文件

floatread[3];

pFile=fopen("myfile.bin","rb");//重新打开文件读操作

fread(read,1,sizeof(read),pFile);//从文件中读数据

printf("%f\t%f\t%f

",read[0],read[1],read[2]);

fclose(pFile);//关闭文件

return0;

}

fopen打开模式rb和rb+有什么区别

函数原型:FILE* fopen(const char* path,const char* mode);

相关函数:open,fclose,fopen_s,_wfopen

返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno中

参数说明:

参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。

r以只读方式打开文件,该文件必须存在。

r+以可读写方式打开文件,该文件必须存在。

rb+读写打开一个二进制文件,允许读写数据,文件必须存在。

w打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。

w+打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。

a以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)

a+以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。(原来的EOF符不保留)

wb只写打开或新建一个二进制文件;只允许写数据。

wb+读写打开或建立一个二进制文件,允许读和写。

ab+读写打开一个二进制文件,允许读或在文件末追加数据。

wx创建文本文件,只允许写入数据。[C11]

wbx创建一个二进制文件,只允许写入数据。[C11]

w+x创建一个文本文件,允许读写。[C11]

wb+x创建一个二进制文件,允许读写。[C11]

w+bx和“wb+x”相同[C11]

以x结尾的模式为独占模式,文件已存在或者无法创建(一般是路径不正确)都会导致fopen失败。文件以操作系统支持的独占模式打开。[C11]

关于fopen和fclose到此分享完毕,希望能帮助到您。

vb编程语言基础 vb编程语言基本语法css全称?css网站