【C】文件读写操作

来源:互联网 发布:卡洛斯实况巅峰数据 编辑:程序博客网 时间:2024/04/30 15:31

第一个例子:将多个文件的内容读出,显示到标准输出上。

#include<stdio.h>void copy(FILE *to,FILE *from);int main(int argc,char *argv[]){    FILE *fp;    if(argc == 1)         {        printf("No input file!\n");        return 1;     }    else    {        while(--argc>0)        {            //以只读方式打开文件            if((fp=fopen(*++argv,"r"))==NULL)            {                printf("ERROR: can't open %s\n",*argv);            }            else            {                copy(stdout,fp);                fclose(fp);            }           }    }return 0;}void copy(FILE *to,FILE *from){    int c;    while((c=getc(from))!=EOF)        putc(c,to);}
  1. FILE *fp 定义一个文件指针

  2. FILE *fopen(char *name,char *mode);
    fopen函数以mode定义的方式打开名为name的文件,返回一个文件指针。

  3. int getc(FILE *fp)
    getc函数从fp指向的文件中读入下一个字符。

  4. int putc(int c,FILE *fp)
    putc函数将字符c(int型)写入fp指向的文件当中。

其实,getchar()函数和putchar(c)函数可以由上面两个函数得到(宏定义)

 #define getchar()    getc(stdin) #define putchar(c)   putc((c),stdout)

我们输入./a.out main.c a.txt 把程序源文件和a.txt这个测试文件打印在屏幕上。这个程序的执行效果如下:
这里写图片描述

第二个例子:由标准输入写入某一个文件。

#include<stdio.h>void copy(FILE *to,FILE *from);int main(int argc,char *argv[]){    FILE *fp;    char *p;    if(argc == 1)        copy(stdout,stdin);    else    {        while(--argc>0)        if((fp=fopen(*++argv,"w"))==NULL)            printf("error:can't open file %s\n",*argv);        else        {            copy(fp,stdin);            fclose(fp);        }    }    return 0;}void copy(FILE *to,FILE *from){    int c;    while((c=getc(from))!=EOF)        putc(c,to);}

上面这个例子,实现了由标准输入向文件写入内容。如果执行的时候main函数不带参数,则将标准输入复制到标准输出,如果main函数后面跟文件名,则以“写”方式打开文件,将标准输入写入到文件中,如果打开文件失败,则报错。
执行效果如下:
这里写图片描述

0 0
原创粉丝点击