C文件读写

文件打开模式.

  • r: 打开已有的文本文件, 只读
  • w: 打开一个文本文件, 允许写入, 如果文件不存在, 则会新创建一个文件,从头开始写入, 如果存在,则会重新写入.
  • a: 打开一个文本文件, 以追加的方式写入, 文件不存在, 会创建. 存在,会追加.
  • r+: 打开一个文本文件, 允许读写.
  • w+: 打开一个文本文件, 允许读写文件. 文件已存在,重写. 不存在,创建
  • a+: 打开一个文本文件, 允许读写文件, 文件存在,创建,追加写入. 不存在, 创建,重新写入.

如果处理的是二进制文件 ,则需要下面的访问模式来取代上述的访问模式.

  • rb, wb, ab, rb+, r+b, wb+, w+b, ab+, a+b

#include <stdio.h>
#include <stdlib.h>

int m()
{
  FILE *fptr = fopen("./test/123.txt","r+");
  if(fptr) //文件存在
  {
    printf("File opened successfully\n");
    fclose(fptr);
    fptr = NULL;
  }else {
    printf("File could not be opened\n");
  }

  return 0;
}


int m1() {
  printf("-----读文件------\n");
  FILE *fptr = fopen("/Users/yaqi/Documents/CLion-Project/untitled/test/123.txt","r");
  if(fptr) {
    printf("File opened successfully\n");
    char c = fgetc(fptr);
    printf("%c",c);
  }
  fclose(fptr);
  fptr = NULL;
  return 0;
}

int m2() {
  printf("-----读文件------\n");
  FILE *fptr = fopen("/Users/yaqi/Documents/CLion-Project/untitled/test/123.txt","r");
  if(fptr) {
    printf("File opened successfully\n");
    while (fgetc(fptr) != EOF) {
      const char c = fgetc(fptr);
      printf("%c",c);
    }

  }
  fclose(fptr);
  fptr = NULL;
  return 0;
}

int m3() {
  printf("-----fputc 写文件------\n");
  FILE *fptr = fopen("/Users/yaqi/Documents/CLion-Project/untitled/test/123.txt","a");
  if(fptr) {
    printf("File opened successfully\n");
    fputc('z', fptr);
  }
  fclose(fptr);
  fptr = NULL;
  return 0;
}

int m4() {
  printf("-----fputc 复制文件------\n");
  FILE *fptr1 = fopen("/Users/yaqi/Documents/CLion-Project/untitled/test/123.txt","r");
  FILE *fptr2 = fopen("/Users/yaqi/Documents/CLion-Project/untitled/test/456.txt","w");
  if (fptr1 && fptr2) {
    printf("File opened successfully\n");
    while (1) {
      char c = fgetc(fptr1);
      if (c == EOF) {
        break;
      }
      fputc(c, fptr2);
    }
  }
  fclose(fptr1);
  fclose(fptr2);
  fptr1 = NULL;
  fptr2 = NULL;
  return 0;
}

int cacl(int a, char opt, int c) {
  int result = 0;
  switch (opt) {
    case '+':
      result = a + c;
      break;
    case '-':
      result = a - c;
      break;
    case '/':
      result = a / c;
      break;
    case '*':
      result = a * c;
      break;
    default: ;
  }
  return result;
}
int m5() {
  printf("-----使用缓冲区, 读取并操作文件------\n");
  FILE *fptr = fopen("/Users/yaqi/Documents/CLion-Project/untitled/test/789.txt","r");
  if(fptr) {
    printf("File opened successfully\n");

    while (1) {
      char buffer[100] = {0};
      fgets(buffer, sizeof(buffer), fptr);
      int num1 = 0;
      char opt = 0;
      int num2 = 0;
      char res = 0;
      //格式化读取
      sscanf(buffer, "%d%c%d%c", &num1, &opt, &num2, &res);
      printf("%d %c %d %c %d\n", num1, opt, num2, res, cacl(num1, opt, num2));
      //feof 判断是否读取到了末尾
      if(feof(fptr)) {
        break;
      }
    }
  }
}

789.txt内容

1+2=
2-1=
3*6=
18/2=
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • [转]C/C++ 文件读写操作总结 在编程的过程中,文件的操作是一个经常用到的问题,在C++Builder中,可以...
    天之道天知道阅读 5,227评论 0 7
  • 原文地址:C 文件读写 本章我们将介绍 C 程序员如何创建、打开、关闭文本文件或二进制文件。 一个文件,无论它是文...
    Little丶Jerry阅读 312评论 0 0
  • C 标准库 – | 菜鸟教程 1. 打开文件 可以使用fopen( )函数来创建一个新的文件或者打开一个已有的文...
    郑行_aover阅读 1,909评论 0 0
  • 简介 C/C++中可以使用以fopen、fclose为代表的文件操作函数对文件进行读写。 注:本文在Linux平台...
    decoding阅读 576评论 0 1
  • 原文地址: https://www.cnblogs.com/saolv/p/7793379.html C语言中没有...
    Caiaolun阅读 2,124评论 1 0