zoukankan      html  css  js  c++  java
  • 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 }

     

  • 相关阅读:
    Minimum Depth of Binary Tree leetcode java
    Maximum Depth of Binary Tree leetcode java
    Symmetric Tree leetcode java
    Same Tree leetcode java
    Binary Tree Postorder Traversal leetcode java
    Binary Tree Preorder Traversal leetcode java
    Binary Tree Inorder Traversal leetcode java
    Combinations leetcode java
    一键清除Centos iptables 防火墙所有规则
    阿里云centos7.7x64安装open,并配置ip转发和nat伪装
  • 原文地址:https://www.cnblogs.com/tamarous/p/4297237.html
Copyright © 2011-2022 走看看