C中访问文件的基本操作
发布日期:2021-07-13 02:57:19 浏览次数:2 分类:技术文章

本文共 2140 字,大约阅读时间需要 7 分钟。

1.在读写一个文件之前,必须通过库函数fopen打开该文件.fopen用外部文件名与操作系统进行某些必要的连接和通信,并返回一个随后可以用于文件读写操作的指针.

声明一个文件指针fp:

FILE *fp;

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

注:FILE像int一样是一个类型名,而不是结构标记.name是文件名,mode为访问模式,包括:读("r"),写("w"),追加("a").

需要注意的几点:(1)如果打开一个不存在的文件用于写或追加,该文件将被创建.

                             (2)如果以写的方式打开一个已存在的文件时,该文件原来的内容将被覆盖.

                             (3)如以追加方式打开一个文件,则该文件原来内容将保持不变.

                             (4)读一个不存在的文件可能导致错误.

2.文件打开后对文件操作的函数:

(1)int getc(FILE *fp)

getc函数返回fp指向的输入流中的下一个字符.

(2)int putc(int c, FILE *fp)

该函数将c写入到fp指向的文件中

(3)int fscanf(FILE *fp, char *format, ....)

(4)int fprintf(FILE *fp, char *format, ....)

它俩为对文件的格式化输入或输出,它俩与scanf和printf的区别仅在于它俩的第一个参数是一个指向所要读写的文件的指针.

(5)int fclose(FILE *fp)

断开由fopen函数建立的文件指针和外部名之间的连接.并释放文件指针以供其他文件使用.

(6)char *fgets(char *line, int maxline, FILE *fp)为行输入函数

fgets函数从fp指向的文件中读取下一个输入行(包括换行符),并将它存放在字符数组line中,它最多可读取maxline-1个字符.读取的行将以'\0'结尾保存到数组中.

(7)int fputs(char *line, FILE *fp)

将一个字符串(不包括换行符)写入到一个文件中 

注:库函数gets和puts的功能与fgets和fputs函数类似,但它们是对stdin和stdout进行操作.还有一点要注意,gets函数在读取字符串時将删除结尾的换行符('\n'),而puts函数将在写入字符串时将在结尾加一个换行符.

3.一个简单的例子(输出文件内容类似于linux的cat)

#include 
#include
void filecopy(FILE *, FILE *); //声明拷贝函数int main(int argc, char *argv[]){ FILE *fp; if(argc == 1) //当参数中没有文件名时,从标准输入copy到标准输出 filecopy(stdin, stdout); else { while(--argc > 0) { if((fp = fopen(*++argv, "r")) == NULL) { printf("cat: can't open %s\n", *argv); return 1; } else { filecopy(fp,stdout); fclose(fp); } } } return 0;}void filecopy(FILE *ifp, FILE *ofp) //将ifp指向的文件拷贝到ofp指向的文件{ int c; while((c = getc(ifp)) != EOF) putc(c, ofp);}
运行:gcc -o a test.c

         ./a t1.txt t2.txt

输出文件t1.txt和文件t2.txt的内容

4.启动一个C文件时,操作系统负责打开三个文件为标准输入,标准输出,标准出错,相应的指针分别为stdin,stdout,stderr

   在大多数环境下stdin指向键盘,stdout和stderr指向显示器.

转载地址:https://blog.csdn.net/buaa_shang/article/details/8169604 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:C中确定整型的范围
下一篇:如何合理利用时间

发表评论

最新留言

不错!
[***.144.177.141]2024年03月31日 04时08分13秒