• C语言文件读写


    1、用fopen打开文件

    该函数的原型为FILE *fopen(const char *filename, const char *mode),第一个参数是文件名,第二个参数是打开文件的模式。

    打开文件的模式主要是以下几种:

    “r”以文本方式打开文件,只进行读操作

    “w”以文本方式打开文件,只进行写操作

    “a”以文本方式打开文件,只往其末尾添加内容

    “rb”以二进制方式打开文件,只进行读操作

    “wb”以二进制方式打开方式,只进行写操作

    “ab”以二进制方式打开文件,只往其末尾添加内容

    “r+”以文本方式打开文件,既读取其数据,也往文件中写入内容

    “r+b”以二进制方式打开文件,既读取其数据,也往文件中写入内容

    在对文件进行读写操作前,判断fopen的返回值是否为NULL, 是非常重要的习惯。

    FILE *fp = fopen(filename,mode)
    
    if (fp == NULL)
    
    {
    
      printf("Failed to open file!
    ");
    
      return 0;
    
    }
    

    2、用fclose关闭文件

    打开文件后,一定要用fclose函数关闭文件。

    3、用fgetc读文件,用fputc写文件

    fgetc的函数原型如下:

    int fgetc(FILE *stream)

    它用于从文件中读取一个字节,返回值即是所读取的字节数。每个字节都被当作一个无
    符号的8位(二进制位)数,因此每个被读取字节的取值范围都是0-255。反复调用fgetc函
    数可以读取整个文件。如果已经读到文件末尾,无法再读,那么fgetc函数返回EOF(实际上
    就是-1)。

    fputc函数原形如下:

    int fputc(int c, FILE *stream)

    它将一个字节写入文件。参数c即是要被写入的字节。虽然c是int类型的,但实际上只
    有其低8位才被写入文件。如果写入失败,该函数返回EOF。

     1 #include <stdio.h>
     2 int main(int argc,char * argv[])
     3 {
     4     FILE *fpSrc,*fpDest;
     5     fpSrc = fopen(argv[1],"rb");
     6     if (fpSrc == NULL)
     7     {
     8          printf("Failed to open the file
    ");
     9          return 0;
    10     }
    11     fpDest = fopen(argv[2],"wb");
    12     if (fpDest == NULL)
    13     {
    14         fclose(fpSrc);
    15         printf("Failed to open the file
    ");
    16         return 0;
    17     }
    18     int c;
    19     while((c = fgetc(fpSrc)) != EOF)
    20     {
    21         fputc(c,fpDest);
    22     }
    23     fclose(fpSrc);
    24     fclose(fpDest);
    25     return 0;
    26 }

     4. 用fgets读文件,用fputs写文件

    fgets函数原型如下:

    char *fgets(char *s, int n, FILE *stream);

    fgets一次从文件中读取一行,包括换行符,放入字符串s中,并且自动加上字符串结尾标志。

    参数n代表缓冲区s中最多能容纳多少个字符。

    fputs函数原型如下:

    int fputs(const char *s, FILE *stream)

    它往文件中写入字符串s。

    3中的程序可以重写为如下形式:

     1 #include <stdio.h>
     2 int main(int argc,char * argv[])
     3 {
     4     FILE *fpSrc,*fpDest;
     5     fpSrc = fopen(argv[1],"r");
     6     if (fpSrc == NULL)
     7     {
     8          printf("Failed to open the file
    ");
     9          return 0;
    10     }
    11     fpDest = fopen(argv[2],"w");
    12     if (fpDest == NULL)
    13     {
    14         fclose(fpSrc);
    15         printf("Failed to open the file
    ");
    16         return 0;
    17     }
    18     char szLine[100];
    19     while(fgets(szLine,99,fpSrc))
    20     {
    21         fputs(szLine,fpDest);
    22     }
    23     fclose(fpSrc);
    24     fclose(fpDest);
    25     return 0;
    26 }

     

  • 相关阅读:
    [codevs 1243][网络提速(最短路分层思想)
    [codevs 1183][泥泞的道路(二分+spfa)
    [codevs 2488]绿豆蛙的归宿(拓扑排序)
    [codevs 1961]躲避大龙(dfs)
    4、userCF和itemCF对比,冷启动
    query简洁弹出层代码
    css 积累1
    localStorage,sessionStorage
    tr th td
    (转存)面向切面编程(AOP)的理解
  • 原文地址:https://www.cnblogs.com/tamarous/p/4297237.html
Copyright © 2020-2023  润新知