C中访问文件的基本操作

本文介绍了C语言中访问文件的基本操作,包括使用fopen打开文件、不同打开模式的含义、文件读写函数如getc、putc、fscanf、fprintf、fclose等的使用,以及 fgets 和 fputs 的行输入输出。此外,还提及了标准输入、输出和错误处理的文件指针 stdin、stdout 和 stderr。

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 <stdio.h>
#include <stdlib.h>

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指向显示器.



评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值