浅谈C语言中的文件操作(一)

对于一个嵌入式开发人员来说,对文件的操作是非常频繁的,所以,对文件操作的知识需要相当的熟悉。

 

         文件部分由几个常用的函数,总结如下:

         打开关闭文件函数:fopen()fclose();

         字符读写函数:     fgetc()fputc();

         字符串读写函数: fgets()fputs();

         数据段读写函数: fread()fwrite();

         格式化读写函数: fprintf()fscanf();

首先,标准文件的操作对文件进行操作之前,必须先打开该文件;使用结束后,应立即关闭,以免数据丢失。

下面举一些简单的例子对fgetc()fputc()函数的使用:

fgetc函数的功能是从指定的文件中读一个字符。

函数调用的形式为:字符变量=fgetc(文件指针)

例如:ch=fgetc(fp);

其意义是从打开的文件fp中读取一个字符并送入ch中。

a.c

#include<stdio.h>

main()

{

         FILE *fp; çFILE是由系统定义取名,用来存放文件有关信息的一个结构类型(须大写)

         char ch:

         if((fp=fopen(“/root/test/a.txt”,”rt”))==NULL) ça.txt不存在fp会指向空,成为空指针

         {

                   printf(“Can not open file!”);

                   exit(0);

         }  ç这段程序来判断是否有所指定的文件,如要打开的文件不存在,会提示指定信息

ch=fgetc(fp); ç 把从文件读出的字符赋值给字符变量ch

while(ch!=EOF)  çEOF为文件的末尾,到达文件末尾之前一直循环

{

                   putchar(ch); ç 输出单个字符ch

                   ch=fgetc(fp); ç 再次给ch赋值,直到读入内容结束

}   ç 此循环的作用为将读入的字符逐个输出,达到输出字符串的目的

printf(“/n”); ç输出工作完成后,再输出一个换行

fclose(fp); ç 对文件操作完成后要关闭文件

}

 

fputc()函数的功能是把一个字符写入指定的文件中,

函数的调用形式为:fputc(字符量,文件指针)

其中,待写入的字符量可以是字符常量或变量。

例如:fputc(‘a’,fp);其意义是把字符a写入fp所指向的文件中。

b.c

#include<stdio.h>

main()

{

         FILE *fp;

         char ch;

         If((fp=open(“/root/a.txt”,”wt+”))==NULL)

         {

                   printf(“Can not open file!”);

                   exit(0);

         }

         printf(“please input a char:/n”);

         ch=getchar();

         while(ch!=’/n’)

         {

                   fputc(ch,fp);

                   ch=getchar();

         }

         rewind(fp); ç 位置指针复位函数,使位置指针移到文件的首部,以便从文件首开始读

         ch=fgetc(fp);

         while(ch!=EOF)

         {

                   putchar(ch);

                   ch=fgetc(fp);

         }

         printf(“/n”);

         fclose(fp);

}

从程序的调试过程中可以体会到以下感受到:

为增强程序的可靠性,常用下面的方法打开一个文件:

if((fp=fopen("文件名","操作方式"))==NULL)

{

printf("can not open this file/n");

exit(0);

}

使用文件的方式有以下几种,下面给出了它们的符号和意义

“r” 只读打开一个文本文件,只允许读数据

“w” 只写打开或建立一个文本文件,只允许写数据

“a” 追加打开一个文本文件,并在文件末尾写数据

“rb” 只读打开一个二进制文件,只允许读数据

“wb” 只写打开或建立一个二进制文件,只允许写数据

“ab” 追加打开一个二进制文件,并在文件末尾写数据

“rt+” 读写打开一个文本文件,允许读和写

“wt+” 读写打开或建立一个文本文件,允许读写

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

“rb+” 读写打开一个二进制文件,允许读和写

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

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

 “rt”         只读打开一个文件,只允许读数据

 “wt”       只写打开或建立一个文本文件,只允许写数据

 “at”        追加打开一个文本文件,并在文件的末尾写数据

文件的使用方式由r,w,a,t,b,+等六个字符拼成,各字符的含义如下:

 r---read:   w---write:  a---append:追加  t---text:文本文件 b---banary:二进制文件

 + --- 读和写

凡是用”r”打开一个文件,该文件必须已经存在,且只能从该文件中读出。

凡是用”w”打开的文件只能向该文件写入。若该文件不存在则自动创建,若存在则将其删除并建立一个新文件。

凡是用”a”打开一个文件,只能向已经存在的文件追加信息。

 

对于fgetc函数的使用:

1.fgetc函数调用中,读取的文件必须是以读或读写方式打开的。

2.读取字符的结果也可以不向字符变量赋值,例如:fgetc(fp);但是读出的字符不能保存。

3. 在文件内部有一个位置指针。用来指向文件的当前读写字节。在文件打开时,该指针总是指向文件的第一个字节。使用fgetc 函数后,该位置指针将向后移动一个字节。因此可连续多次使用fgetc函数,读取多个字符。应注意文件指针和文件内部的位置指针不是一回事。文件指针是指向整个文件的,须在程序中定义说明,只要不重新赋值,文件指针的值是不变的。文件内部的位置指针用以指示文件内部的当前读写位置,每读写一次,该指针均向后移动,它不需在程序中定义说明,而是由系统自动设置的。

 

对于fputc函数的使用:

1.被写入的文件可以用、写、读写,追加方式打开,用写或读写方式打开一个已存在的文件时将清除原有的文件内容,写入字符从文件首开始。如需保留原有文件内容,希望写入的字符以文件末开始存放,必须以追加方式打开文件。被写入的文件若不存在,则创建该文件。

2.每写入一个字符,文件内部位置指针向后移动一个字节。

3.fputc函数有一个返回值,如写入成功则返回写入的字符,否则返回一个EOF。可用此来判断写入是否成功。

关于exit()函数

格式:void exit(程序状态值)

功能:关闭已经打开的所有文件,结束程序运行,返回操作系统,并将程序状态值返回给操作系统。当程序状态值0时,表示程序正常退出;非0值时,表示程序出错退出。

 

r+ a+的区别:使用前者打开文件时,读写位置指针指向文件头,即写入文件时覆盖原来的内容;使用后者,读写指针指向文件尾,即写入内容时追加到原内容后面。

 

使用文本文件向计算机系统输入数据时,系统自动将回车换行符转换成一个换行符;在输出时,将换行符转换成回车和换行两个字符。使用二进制文件时,内存中的数据形式与数据文件中的形式完全一样,就不再进行转换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值