C文件讀寫

文件打開模式.

  • r: 打開已有的文本文件, 只讀
  • w: 打開一個(gè)文本文件, 允許寫入, 如果文件不存在, 則會(huì)新創(chuàng)建一個(gè)文件,從頭開始寫入, 如果存在,則會(huì)重新寫入.
  • a: 打開一個(gè)文本文件, 以追加的方式寫入, 文件不存在, 會(huì)創(chuàng)建. 存在,會(huì)追加.
  • r+: 打開一個(gè)文本文件, 允許讀寫.
  • w+: 打開一個(gè)文本文件, 允許讀寫文件. 文件已存在,重寫. 不存在,創(chuàng)建
  • a+: 打開一個(gè)文本文件, 允許讀寫文件, 文件存在,創(chuàng)建,追加寫入. 不存在, 創(chuàng)建,重新寫入.

如果處理的是二進(jìn)制文件 ,則需要下面的訪問模式來取代上述的訪問模式.

  • 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 復(fù)制文件------\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("-----使用緩沖區(qū), 讀取并操作文件------\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內(nèi)容

1+2=
2-1=
3*6=
18/2=
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • [轉(zhuǎn)]C/C++ 文件讀寫操作總結(jié) 在編程的過程中,文件的操作是一個(gè)經(jīng)常用到的問題,在C++Builder中,可以...
    天之道天知道閱讀 5,290評(píng)論 0 7
  • 原文地址:C 文件讀寫 本章我們將介紹 C 程序員如何創(chuàng)建、打開、關(guān)閉文本文件或二進(jìn)制文件。 一個(gè)文件,無論它是文...
    Little丶Jerry閱讀 326評(píng)論 0 0
  • C 標(biāo)準(zhǔn)庫 – | 菜鳥教程 1. 打開文件 可以使用fopen( )函數(shù)來創(chuàng)建一個(gè)新的文件或者打開一個(gè)已有的文...
    鄭行_aover閱讀 1,956評(píng)論 0 0
  • 簡(jiǎn)介 C/C++中可以使用以fopen、fclose為代表的文件操作函數(shù)對(duì)文件進(jìn)行讀寫。 注:本文在Linux平臺(tái)...
    decoding閱讀 597評(píng)論 0 1
  • 原文地址: https://www.cnblogs.com/saolv/p/7793379.html C語言中沒有...
    Caiaolun閱讀 2,162評(píng)論 1 0

友情鏈接更多精彩內(nèi)容