分享

fopen文件操作

 海漩涡 2016-07-24

#include <stdio.h>

/*
    FILE *fp;
    【1】FILE *fopen(char *name, char *mode);

    【2】// 流fp出现错误,返回非0值
    int ferror(FILE *fp)

    【3】// 到达文件末尾,返回非0值
    int feof(FILE *fp)

    
    【4】// 返回fp指向的输入流中的下一个字符,文件尾或错误返回EOF
    int getc(FILE *fp); 

    【5】// 将字符c写入到fp指向的文件中,并返回写入的字符。错误返回EOF
    int putc(int c, FILE *fp);

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

    【7】
    int fscanf(FILE *fp, char *format, ...)
    int fprintf(FILE *fp, char *format, ...)

    【8】
     // 从fp中读取maxline - 1 个字符并以'\0'结尾保存到数组line中。
     // 通常返回line遇文件结尾或发生错误返回NULL。

     char *fgets(char *line, int maxline, FILE *fp)

     // 将一个字符串写入到一个文件中。
     // 发生错误返回EOF,否则返回一个非负值。

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

     【9】

      // 与fgets和fputs类似,但其对stdin,stdout进行操作
      gets在每行末尾删除'\n'
      puts在每行末尾添加'\n'
      char *gets(char *s);

      int puts(const char *s);

*/


/* cat函数的实现 */
int main(int argc, char *argv[])
{
    FILE *fp;
    void filecopy(FILE *, FILE *);

    if(argc == 1) /* 若没有命令行参数,则复制标准输入 */
        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;
}

/* filecopy函数: 将文件ifp复制到文件ofp */
void filecopy(FILE *ifp, FILE *ofp)
{
    int c;

    while((c = getc(ifp)) != EOF)
        putc(c, ofp);
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多