<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      實用指南:【18】C實戰篇——C語言 文件讀寫【fputc、fgetc、fputs、fgets】

      文章目錄

      • 3 文件的順序讀寫
        • 3.1 逐字符讀寫
          • 3.1.1 逐字符寫 fputc
          • 3.1.2 逐字符讀 fgetc
        • 3.2 文本行的讀寫
          • 3.2.1 文本行的寫 fputs
          • 3.2.2 文本行的寫 fgets

      3 文件的順序讀寫

      在這里插入圖片描述

      說到流,這里我們進行簡單科普:

      讀寫文件時我們需要:

      • 打開文件
      • 讀寫文件
      • 關閉文件

      例如:我們在使用scanf,和printf時,并沒有什么打開鍵盤,打開屏幕等一系列操作,默認就直接進行操作。

      這是因為C程序只要運行起來,就默認打開三個流:

      標準輸入流  stdin
      標準輸出流  stdout
      標準錯誤流  stderr

      所以在使用scanf,printf時就可以默認使用。 它們的類型都是FILE*類型。

      什么是流?

      流是指數據在計算機中的傳輸方式,它是數據的有序序列,可以是字節、字符、圖像、音頻或視頻等形式輸入流用于從外部讀取數據到計算機內存中,而輸出流則用于將計算機內存中的數據寫入到外部設備或文件中。流的操作可以是順序的,也可以是隨機的。

      我們繼續回到文件讀寫函數。

      fgetc是字符輸入函數,一次讀入一個字符到程序當中,
      fputc是字符輸出函數,一次輸出一個字符,它們都是適用于所有流的,可以是從鍵盤輸入,也可以是從文件里讀取輸入。
      至于輸出,可以輸出到屏幕上,也可以輸出到文件里。

      3.1 逐字符讀寫

      3.1.1 逐字符寫 fputc

      我們可以來嘗試一下寫文件:
      寫26個字母寫到這個data.txt文件中。

      #include<stdio.h>
        int main()
        {
        FILE* pf = fopen("data.txt", "w");
        if (pf == NULL)
        {
        perror("fopen");
        return 1;
        }
        int i = 0;
        for (i = 0; i < 26; i++)
        {
        fputc('a' + i, pf);
        }
        fclose(pf);
        pf = NULL;
        return 0;
        }

      我們運行一下程序,在當前程序路徑下找到data.txt文件。打開來看,它確實會按照順序寫入26個字母。
      在這里插入圖片描述

      如果我們想要輸出到屏幕上,就只需把fputc('a' + i, pf);里的pf換成stdout就行了

      //輸出(寫)到 文本
      //fputc('a' + i, pf);
      //輸出(寫)到 屏幕	
      fputc('a' + i, stdout);

      在這里插入圖片描述

      3.1.2 逐字符讀 fgetc

      接下來我們嘗試一下讀文件:

      我們將剛剛寫入的文件數據保存,然后對文件進行讀取數據:

      #include<stdio.h>
        int main()
        {
        FILE* pf = fopen("data.txt", "r");
        if (pf == NULL)
        {
        perror("fopen");
        return 1;
        }
        int ch;
        for (int i = 0; i < 26; i++) {
        //從文本 讀取
        ch = fgetc(pf);
        //從鍵盤 讀取
        //ch = fgetc(stdin);
        printf("%c", ch);
        }
        fclose(pf);
        pf = NULL;
        return 0;
        }

      在這里插入圖片描述
      這里fgetc的返回值是int類型,如果遇到文件末尾或者讀取失敗會返回EOF。

      此外fgetc函數還可以從鍵盤上讀取,只需將fgetc(pf)改成fgetc(stdin);

      3.2 文本行的讀寫

      fgets和fputs

      3.2.1 文本行的寫 fputs

      或許大家會想一次讀寫一個字符太麻煩了。接下來就是文本行的讀寫。

      int main()
      {
      FILE* pf = fopen("data.txt", "w");
      if (pf == NULL)
      {
      perror("fopen");
      return 1;
      }
      fputs("abcdef", pf);
      fclose(pf);
      pf = NULL;
      return 0;
      }

      這次我們重新讀入,一次讀入abcdef這6個字符。因為是同對一個文件進行操作,所有原先寫入的數據會被覆蓋。

      我們再次打開data.txt ,可以觀察到,文件中只有新寫入abcdef。

      在這里插入圖片描述

      3.2.2 文本行的寫 fgets

      fgets的參數依次是,讀取后存放的位置,讀取的字符個數(n-1)個,讀取數據的位置。

      我們可以先在讀數據的文件中輸入長度超過20的字符進行驗證。

      下面時26個字符,n=20;

      在這里插入圖片描述

      int main()
      {
      FILE* pf = fopen("data.txt", "r");
      if (pf == NULL)
      {
      perror("fopen");
      return 1;
      }
      char ch[20] = { 0 };
      fgets(ch, 20, pf);//讀num-1個
      printf("%s\n", ch);
      fclose(pf);
      pf = NULL;
      return 0;
      }

      可以看到 讀取了 19個字符 ,//讀num-1個

      在這里插入圖片描述

      posted @ 2025-11-04 21:42  yangykaifa  閱讀(4)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产亚洲精品AA片在线爽| 性欧美牲交在线视频| 色噜噜狠狠成人综合| 亚洲精品无码久久一线| 97久久久亚洲综合久久| 欧美日韩国产va在线观看免费| 国内精品人妻无码久久久影院导航| 成人免费在线播放av| 国产在线乱子伦一区二区| 少妇的丰满3中文字幕| 日韩精品一区二区亚洲av| 花垣县| 啊轻点灬大JI巴太粗太长了在线 | 一本久道久久综合中文字幕| 国产精品户外野外| 人成午夜免费视频无码| 紫阳县| 精品一区二区亚洲国产| 乱女乱妇熟女熟妇综合网| 国产999久久高清免费观看| 九九热视频精品在线播放| 99re热这里只有精品视频| 国产精品呻吟一区二区三区| 久爱www人成免费网站| 人人人澡人人肉久久精品| 青草草97久热精品视频| 亚洲av熟女国产一二三| 欧美不卡无线在线一二三区观| 亚洲欧美不卡视频在线播放| 伊人久久大香线焦av综合影院| 国产伦精区二区三区视频| 蜜臀av久久国产午夜| 最新国产AV最新国产在钱 | 国产偷窥熟女高潮精品视频| 成全影视大全在线观看| 国产a在亚洲线播放| 柠檬福利第一导航在线| 久久发布国产伦子伦精品| 亚洲综合久久一区二区三区| 亚洲www永久成人网站| 99热精国产这里只有精品|