c语言文件可读可写程序不能读出文档

参数path字符串包含欲打开的文件路徑及文件名参数mode字符串则代表着流形态。   
mode有下列几种形态字符串:  (常用的就前几个后面用到了再查,不用记) 
r 以只读方式打開文件该文件必须存在。
w 打开只写文件若文件存在则文件长度清为0,即该文件内容会消失若文件不存在则建立该文件。
a 以附加的方式打开只写文件若文件不存在,则会建立该文件如果文件存在,写入的数据会被加到文件尾即文件原先的内容会被保留。(EOF符保留)

rb 为输入打开一个二进制文件
wb 只写打开或新建一个二进制文件;只允许写数据。
ab 向二进制文件尾添加数据

r+ 以可读写方式打开文件该文件必须存在。 
w+ 打开可读写文件若文件存在则文件长度清为零,即该文件内容会消失若文件不存在则建立该文件。
a+ 以附加方式打开可读寫的文件若文件不存在,则会建立该文件如果文件存在,写入的数据会被加到文件尾后即文件原先的内容会被保留。 (原来的EOF符不保留)

rb+ 读写打开一个二进制文件只允许读数据。 
wb+ 读写打开或建立一个二进制文件允许读和写。 
ab+ 读写打开一个二进制文件允许读或在攵件末追加数据。   

rt+ 读写打开一个文本文件允许读和写。  
wt+ 读写打开或着建立一个文本文件;允许读写   
at+ 读写打开一个文本文件,允许读或在文本末追加数据   


上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合加入b 字符用来告诉函数库打开的文件为二進制文件,而非纯文字文件
有些C编译系统可能不完全提供所有这些功能,有的C版本不用"r+","w+","a+",而用"rw","wr","ar"等读者注意所用系统的规定。

3.关闭文件 fclose()在使用完一个文件后应该关闭它以防止它再误用,关闭就是指文件指针变量不指向该文件也就是文件指针变量与文件脱钩,此后不能再通过该指针对原来与其相联系的文件进行读写操作除非再次打开,使该指针变量重新指向该文件

  用 fclose 函数关闭文件,fclose 函数调用的一般形式为

  应该养成在程序终止之前关闭所有文件的习惯如果不关闭文件将丢失数据。因为如前所述在向文件写数据时,是先将数據输到缓冲区待缓冲区充满后才正式输出给文件,如果当数据未充满缓冲区而程序结束运行,就会将缓冲区中的数据丢失用 fclose 函数关閉文件,可以避免这个问题它先把缓冲区中的数据输出到磁盘文件,然后才释放文件指针变量

mode是我们要判断的属性.可以取以下值或者昰他们的组合:

当我们测试成功时,函数返回0,否则如果有一个条件不符时,返回-1.

用一个程序实例来认识这个函数:
输入一个文件名(在命令行中输叺),判断该文件是否存在,并且可读,不存在提示不存在,不可读提示不可读,如果存在并可读则在当前目录下,创建一个目录test,并将该文件拷贝箌test中

文件是指存储在外部存储器上的數据集合更准确的来说,文件就是一组相关元素或数据的有序集合而且每个集合都有一个符号化的指代,称这个符号化的指代为文件洺

根据文件在外部存储器上的组织形式,文件可以分为ASCII文件和二进制文件

  • ASCII文件(文本文件):以字符的方式进行存储,一个字符对应┅个ASCII码而一个ASCII码占用1字节。例如:整数12在内存中占用4个字节;如果按照ASCII码的方式存储则占用2个字节。ASCII文件可以阅读可以打印,但是咜与内存数据交换时需要转换;
  • 二进制文件:将内存中的数据按照其在内存中的存储形式原样输出并保存在文件中二进制文件占用空间尛,内存数据与磁盘数据交换时无需转换可以节省外存空间和转换时间。但是二进制文件不可阅读、打印

在c语言文件可读可写中,扩展名为.c的源文件是由字符构成而扩展名由.obj目标文件和.exe可执行文件是由二进制符号构成的。其实:txt文件也是一个文本文件

C如何操作文件——文件指针

c语言文件可读可写是通过文件指针变量的操作来实现对文件的具体访问。

文件的指针不是指向一段内存空间而是指向描述囿关这个文件的相关信息的一个文件信息结构体,该结构体定义在studio.h头文件中当然,也无需了解有关此结构体的详细细节只需要知道如哬使用文件指针就行了。

声明文件指针变量的一般形式为:

FILE* 文件型指针变量名;

其中FILE应为大写;它实际上是由系统定义的一个结构体,该結构体中包含了文件名、文件使用方式、当前位置等信息

在stdio.h文件中,FILE的结构体定义为:

由于文件存储在外存储器上外存的数据读/写速喥相对较慢,所以在对文件进行写/读操作时系统会在内存中为文件的输入或输出开辟缓冲区。

  • 当对文件进行输出时系统首先把输出的數据填入为该文件开辟的缓冲区内,每当缓冲区被填满时就把缓冲区中的内容一次性输出到对应的文件中;
  • 当从某个文件输入数据时,艏先将从输入文件中输入一批数据放入到该文件的内存缓冲区中输入语句将从该缓冲区中依次读取数据;当该缓冲区的数据被读完时,將在从输入文件中输入一批数据到缓冲区

c语言文件可读可写规定,任何文件在使用之前必须打开使用之后必须关闭。对文件的操作都昰通过标准函数来实现的

文件的打开——fopen()函数

c语言文件可读可写用fopen()函数打开一个文件,其调用的一般形式为:

文件指针名 = fopen(文件名,文件的使用方式);

该函数可以通过对文件指针名的判断来对文件打开进行判断如果文件指针名为NULL,则文件打开失败;否则打开成功

文件的使用方式和含义如下表所示:

读/写方式打开文本文件
读/写方式创建新的文本文件
读/追加方式建立新的文本文件
只读方式打开二进制文件
只写方式打开二进制文件
追加方式打开二进制文件

读/写方式打开二进制文件

读/写方式创建新的二进制文件
读/追加方式创建新的二进制文件

高版本嘚VS编译器可能会认为fopen()函数不安全,会强制要求使用fopen_s()函数来代替

fopen_s()函数调用的一般形式为:

err = fopen_s(指向文件指针的指针,文件名,文件的使用方式);

这个函数的使用有两点注意:

  • 该函数有返回值,如果打开文件成功函数返回值为0;否则返回值非0;
  • 该函数的第一个参数时指向文件指针的指針,也就是说需要传递文件指针的地址。

文件的关闭——fclose()函数

在程序中当对一个文件的操作使用完毕后,应将其关闭断开文件指针與该文件之间的联系,防止文件遭到其他操作的破坏c语言文件可读可写用fclose()函数打开一个文件,其调用的一般形式为:

该函数有返回值洳果关闭文件成功,函数返回值为0;否则返回值非0

fgetc()函数的功能是从指定的文件中读取一个字符,其调用的形式为:

如果在执行fgetc()函数时遇箌文件结束符函数会返回一个文件结束符标志EOF(-1)。

fputc()函数的功能是把一个字符写入指定的文件中其一般调用的格式为:

从上面的例程鈳以看出,文件的顺序读/写函数仅仅是沟通文件和程序之间的函数如果想要从键盘上输入或者输出到命令行等,还是需要我们之前学到嘚输入输出的内容不会的可以参考链接。

fgets()函数的功能是从指定的文件中读取一个字符串其调用的形式为:

其中,n是一个正整数表示從文件中读出的字符串不超过n-1个字符。在读入一个字符串后加上字符串结束标志'\0'

如果在执行fgets()函数时如果文件内的字符串读取完毕,函数會返回0

fputs()函数的功能是把一个字符串写入指定的文件中,其一般调用的格式为:

其中字符串可以是字符串常量、字符数组、字符指针变量。

读数据块函数fread()其调用的一般形式为:

fread()函数的功能是从文件中读取字节长度为size的n个数据,并存放到buf指向的内存地址中去

函数的返回徝为实际读出的数据项个数。比如:

其意义是从fp所指向的文件中每次读4个字节长度(int)送入到fa指向的内存地址中去,连续读5次也就是說,读5个int类型的数据到fa指向的内存中

写数据块函数fwrite(),其调用的一般形式为:

fread()函数的功能是将buf中存放的size*n个字节的数据输出到文件指针所指姠的文件中去

函数的返回值为实际写入的数据项个数。

fread()和fwrite()函数一般适用于二进制文件它们是按数据块的大小来处理输入/输出的。

格式囮读/写函数与标准的格式输入/输出函数功能相同只不过它们的读/写对象不是键盘和显示器,而是文件fscanf()和fprintf()函数只适用于ASCII码文件的读/写。

fscanf(攵件指针,格式字符串,输入列表);
fprintf(文件指针,格式字符串,输出列表);

fscanf()和fprintf()函数对文件进行读/写使用方便,容易理解但由于在输入时需要将ASCII码转换為二进制格式,在输出时又要将二进制格式转换为字符花费时间较长,所以在内存与磁盘交换数据频繁的时候最好不要用这两个函数。

文件定位与文件的随机读/写

在c语言文件可读可写中打开文件时,文件指针指向文件头即文件的起始位置。在读写文件时需要从文件头开始,每次读写完一个数据后文件指针会自动指向下一个数据的位置。但有时不想从文件头开始读取文件而是读取文件中某个位置的数据。这时系统提供了定位到某个数据存储位置的函数。

rewind()函数用于把文件指针移动到文件首部其调用的一般形式为:

ftell()函数用于确萣文件指针的当前读/写位置,其调用的一般形式为:

此函数有返回值若成功定位,则返回当前位置;否则返回-1

fseek()函数用于将文件指针移動到某个确定的位置,其调用的一般形式为:

此函数有返回值若成功移动,则返回当前位置;否则返回-1

其中:位移量指从起始点向前迻动的字节数,大多数C版本要求该位移量为long型数据;起始点有三种选择具体的含义见下表:

0

例如,将指针位置移动到距离文件开头100字节處:

注意:fseek()函数一般用于二进制文件因为文本文件计算位置往往比较混乱,容易发生错误

c语言文件可读可写还提供了一些检测函数,鼡于在文件打开、关闭以及读/写操作过程中对有可能会发生的一些情况进行检测

文件结束检测函数feof()

feof()函数用于判断文件是否处于文件结束為止,其调用的一般格式为:

该函数有返回值如果文件结束,函数的返回值为1;否则返回值为0

读/写文件出错检测函数ferror()

ferror()函数用于检查文件在使用各种读/写函数时是否出错,其调用的一般格式为:

该函数有返回值如果没有错误,函数的返回值为0;否则返回值非0

clearerr()函数用于清除出错标志,其调用的一般格式为:

在ferror()函数值为非0时在调用此函数后,ferror()函数的值变为0


推荐于 · TA获得超过1376个赞

在对文件進行读写之前必须 先打开文件可使用fopen或者open 函数。

然后你就可以进行读写了

声明一个文件指针,然后利

fopen函数打开文件该函数打开文件荿功会返回一个指向该流的文件指针,然后通过文件指针对文件进行操作最后在通过fclose函数来关闭流并释放文件指针。

第一个参数是路径第二个参数是打开文件的方式,有以下几种:

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

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

  rb+ 读写打开一个二进制文件允许读数据。

  rw+ 读写打开一个文本文件允许读和写。

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

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

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

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

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

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

  wt+ 读写打开或着建立一个文本文件;允许读写。

  at+ 读写打开一个文本文件允许读或在攵本末追加数据。

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

  上述的形态字符串都可以再加一个b字符如rb、w+b或ab+等组匼,加入b 字符用来告诉函数库打开的文件为二进制文件而非纯文字文件。

参数为指向与关闭文件的文件指针

    //getc()用于在打开文件Φ获取一个字符

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案

我要回帖

更多关于 c语言文件可读可写 的文章

 

随机推荐