C言语文件的翻开与封闭

在C言语中,文件操作多是由库函数来完成的,这节引见文件的翻开和封闭。

文件的翻开(fopen函数)

fopen() 函数用来翻开一个文件,它的原型为:

FILE *fopen(char *filename, char *mode);

filename为文件名(包含文件途径),mode为翻开方法,它们多是字符串。fopen() 会获取文件信息,包含文件名、文件形态、以后读写地位等,并将这些信息保管到一个FILE类型的构造体变量中,然后将该变量的地址前往。

FILE是在stdio.h头文件中界说的一个构造体,用来保管文件信息。

假如愿望接纳 fopen() 的前往值,就需求界说一个 FILE 类型的指针。例如:

FILE *fp = ("demo.txt", "r");

表现以“只读”方法翻开以后目次下的 demo.txt 文件,并使 fp 指向该文件,如许就可以经过 fp 来操作 demo.txt 了。fp 平日被称为文件指针。又如:

FILE *fp = fopen("D:\\demo.txt","rb");

表现以二进制方法翻开 D 盘下的 demo.txt 文件,许可读和写。
翻开方法(mode)有多种,见下表:

翻开方法 阐明
r 以只读方法翻开文件,只许可读取,不许可写入。该文件必需存在。
r+ 以读/写方法翻开文件,许可读取和写入。该文件必需存在。
rb+ 以读/写方法翻开一个二进制文件,许可读/写数据。
rt+ 以读/写方法翻开一个文本文件,许可读和写。
w 以只写方法翻开文件,若文件存在则长度清为0,即该文件内容消逝,若不存在则创立该文件。
w+ 以读/写方法翻开文件,若文件存在则文件长度清为零,即该文件内容会消逝。若文件不存在则树立该文件。
a 以追加的方法翻开只写文件。若文件不存在,则会树立该文件,假如文件存在,写入的数据会被加到文件尾,即文件本来的内容会被保存(EOF符保存)。
a+ 以追加方法翻开可读/写的文件。若文件不存在,则会树立该文件,假如文件存在,则写入的数据会被加到文件尾后,即文件本来的内容会被保存(本来的EOF符 不保存)。
wb 以只写方法翻开或新建一个二进制文件,只许可写数据。
wb+ 以读/写方法翻开或树立一个二进制文件,许可读和写。
wt+ 以读/写方法翻开或树立一个文本文件,许可读写。
at+ 以读/写方法翻开一个文本文件,许可读或在文本末追加数据。
ab+ 以读/写方法翻开一个二进制文件,许可读或在文件末追加数据。

文本文件和二进制文件的差别请检查:C言语fopen()翻开文本文件与二进制文件的差别

几点阐明

1) 文件翻开方法由r、w、a、t、b、+ 六个字符拼成,各字符的寄义是:

  • r(read):读
  • w(write):写
  • a(append):追加
  • t(text):文本文件,可省略不写
  • b(banary):二进制文件
  • +:读和写

2) 假如没有“b”字符,文件以文本方法翻开。
3) 凡用“r”翻开一个文件时,该文件必需曾经存在。
4) 在翻开一个文件时,假如失足,fopen将前往一个空指针值NULL。在程序中可以用这一信息来判别能否完成翻开文件的任务,并作响应的处置。因而常用以下程序段翻开文件:

			if( (fp=fopen("D:\\demo.txt","rb") == NULL ){ printf("Error on open D:\\demo.txt file!"); getch(); exit(1); }

这段程序的意义是,假如前往的指针为空,表现不克不及翻开D盘根目次下的 demo.txt 文件,并给出提醒信息“error on open D:\\demo.txt file!”。第3行getch()的功用是从键盘输出一个字符,但不在屏幕上显示。在这里,该行的感化是等候,只要当用户从键盘敲任一键时,程序才持续履行,因而用户可应用这个等候工夫浏览失足提醒。敲键后履行exit(1)加入程序。
5) 把一个文本文件读入内存时,要将ASCII码转换成二进制码,而把文件以文本方法写入磁盘时,也要把二进制码转换成ASCII码,因而文本文件的读写要破费较多的转换工夫。对二进制文件的读写不存在这种转换。
6) 规范输出文件 stdin(键盘)、规范输入文件 stdout(显示器)、规范毛病文件 stderr(显示器)是由零碎翻开的,可直接运用。

文件封闭(fclose函数)

文件一旦运用终了,应当用fclose()函数把文件封闭,以释放相干资本,防止数据丧失。fclose() 的原型为:

int fclose(FILE *fp);

fp 为文件指针。例如:

fclose(fp);

文件正常封闭时,fclose() 的前往值为0,假如前往非零值则表现有毛病发作。

时间: 2024-08-27 19:01:38

C言语文件的翻开与封闭的相关文章

标准I/O函数的调用都会使得底层I/O调用被履行

该类型中,文件的实践操作是缓存被充溢以后进行的缓存没有彻底被充溢时,体系不会主动将文件写入磁盘.除非体系调用改写(flush操作强行将数据写入磁盘. 输入和输出进程中遇到行完毕象征的时分,标准I/O库就履行实践的I/O操作.体系不会为流分配内存,每一次标准I/O函数的调用都会使得底层I/O调用被履行  文件的翻开与封闭 当体系操作一个文件时,会在内存中为该文件分配一个FILE构造的内存区域,用来寄存与该文件有关的信息(如文件称号,文件状况以及文件当时方位等) FILE即是一个构造体.FILE指针

封闭文件时能够开释与其对用的FILE构造内存

文件在运用完以后,必需将其封闭.这是因为翻开的文件在进行写入操作时,若文件缓冲区的空间未填满,这些数据不会被实践写入到文件中去,发作数据丢掉. 翻开的文件只要在封闭时,停留在文件缓冲区的内容才华被写入到实践的磁盘文件中, 一起封闭文件时能够开释与其对用的FILE构造内存. 文件的封闭-----fclose fclosepfile; //pfile一个FILE类型指针,指向一个现已被翻开的文件. fclose封闭文件前先铲除文件缓冲区,若封闭成功则回来0不然回来EOF-1 fcloseal;//封

iOSDay35数据处理之文件读写

1. 沙盒机制 1> 沙盒概述 每一个iOS应用程序都会为自己创建一个文件系统目录(文件夹), 这个独立.封闭.安全的空间,叫做沙盒 注:① 每一个应用程序都会拥有一个应用程序沙盒 ② 应用程序沙盒就是一个文件系统目录 2> 沙盒机制 iOS中沙盒机制是一种安全体系 它规定了应用程序只能在为该应用程序创建的文件夹(沙盒)内访问文件,不可以访问其他沙盒内的内容(iOS8 已经部分开放访问) 所有的非代码文件都保存在这个地方,比如图片.声音.属性列表(plist).sqlite数据库和文本文件等

数据本地化之沙盒机制

1.什么是沙盒机制(SandBox)?每个iOS应用程序都会为自己创建一个文件系统目录(文件夹),这个独立,封闭,安全的空间,叫做沙盒. 注意:1.每一个应用程序都会拥有一个应用程序沙盒. 2.每一个程序沙盒就是一个文件系统目录. 2.沙盒的特点 3.沙盒的文件夹及各个文件夹的作用 4.简单数据类型写入本地(字符串,数组,字典,NSData类型的数据存储在本地) #pragma mark - 简单对象的本地持久化    #pragma mark - 将NSString类型的数据存储到本地   

女子倒车碰死1岁儿女 称出听到倒车雷达响 倒车雷达 撞逝世

倒车雷达盲区示用意 女子启奥迪倒车时碰死一岁的疏师儿女,以后口熟惭愧从此不敢再合车.夜前,南京市昌仄区法院审结了那伏案件. <法造早报>记者对2006年以去领死在海内的26起轿车倒车撞死人案进行统计发隐,受益人6败多是儿童,且此中过半是3岁以下幼童. 而闹事车辆以设置装备摆设绝对高等的西高级轿车替宾.汽车业资浅我士告知网站,固然轿车广泛装置无倒车雷达,但雷达有盲区,主高空到探尾侧下圆10至15厘米的物体,雷达难以发明,而这个高度倒差取3岁以下幼童蹲正在天下游玩时的身下相称,因而几次产生悲剧.

归档和解归档

沙盒 1.定义 沙盒:IOS的沙盒(sandbox)机制:是一种安全体系,IOS应用程序只能对自己创建的应用程序进行读取文件,这个独立 封闭 安全的空间,就是咱们说得沙盒.他里面一般存放着你的程序需要的文件,数据持久化的一些文件(Plist sqlist…)音视频 图片以及其他资源文件 2.每个应用程序只有一个沙盒 沙盒里面有三个文件夹 1)Documents 目录下的内容 会被同步到另一台设备 可以存放媒体资源 文本资源 2)Library 可以把缓存的内容放到Library/Caches 3

I/O供应的缓存类型:全缓存,行缓存,无缓存

文件缓存进程:当数据从内存向磁盘输出时,数据必需先送到缓存中,等到缓存满了或许次第恳求清空缓存的时分,数据才被写入磁盘. 全缓存:该类型中,文件的实习操作是缓存被布满以后进行的缓存没有完全被布满时,系统不会自动将文件写入磁盘.除非系统调用改写(flush操作强即将数据写入磁盘. 行缓存:输入和输出进程中遇到行结束标志的时分,规范I/O库就实行实习的I/O操作. 无缓存:系统不会为流分配内存,每一次规范I/O函数的调用都会使得底层I/O调用被实行. 文件的翻开与关闭 当系统操作一个文件时,会在内存

struts2表单提单细节处理

1. 上传文件 struts2提供了封闭的上传文件的入口, 或者网络上存在大量的插件用于网页表单中上传文件. struts2对文件上传的格式,及上传文件的大小有很好的限制. <s:file cssClass="doc" name="documents[0].actionFile" /> 这样上传的文件会自动map到对象的属性上, 或者我们使用File []fileArray来预存表单提交到action的文件队列. 不过通过此方法上传的文件队列是没有文件类

msql_createdb: 建立一个新的 mSQL 数据库。

mcrypt_ecb: 使用 ECB 将资料加/解密. mcrypt_get_block_size: 取得编码方式的区块大小. mcrypt_get_cipher_name: 取得编码方式的名称. mcrypt_get_key_size: 取得编码钥匙大小. mcrypt_ofb: 使用 OFB 将资料加/解密. md5: 计算字符串的 MD5 哈稀. mhash: 计算哈稀值. mhash_count: 取得哈稀 ID 的最大值. mhash_get_block_size: 取得哈稀方式的区块