关于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+ 的区别:使用前者打开文件时,读写位置指针指向文件头,即写入文件时覆盖原来的内容;使用后者,读写指针指向文件尾,即写入内容时追加到原内容后面。
 
使用文本文件向计算机系统输入数据时,系统自动将回车换行符转换成一个换行符;在输出时,将换行符转换成回车和换行两个字符。使用二进制文件时,内存中的数据形式与数据文件中的形式完全一样,就不再进行转换。

你可能感兴趣的:(职场,C语言,文件操作,休闲)