日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言向文件写入内容并读取显示

發布時間:2024/8/23 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言向文件写入内容并读取显示 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
將學生信息(姓名、年齡、學號和平均分)寫入文件,然后讀取顯示出來。

要求:
  • 從控制臺輸入學生信息;
  • 可以輸入任意數目的學生信息;
  • 文件每行存儲一條學生信息,姓名、年齡、學號、平均分以tab(\t)為分隔。

代碼實現: 復制純文本復制
  • #include <stdio.h>
  • #include <stdlib.h>
  • #include <errno.h>
  • ?
  • #define FILE_PATH "D:/demo.txt" // 文件路徑
  • ?
  • int main(){
  • char name[20]; // 姓名
  • int age; // 年齡
  • int studNo; // 學號
  • float score; // 平均分
  • FILE *fp; // 文件指針
  • // 判斷文件是否能夠正確創建/打開
  • if( (fp=fopen(FILE_PATH,"wt+")) == NULL ){
  • perror(FILE_PATH);
  • exit(1);
  • }
  • // 從控制臺輸入學生信息并寫入文件
  • printf("請輸入姓名、年齡、學號和平均分(以空格分隔):\n");
  • while(scanf("%s %d %d %f", name, &age, &studNo, &score)!= EOF){
  • fprintf(fp,"%s\t%d\t%d\t%f\n", name, age, studNo, score);
  • }
  • // 刷新緩沖區,將緩沖區的內容寫入文件
  • fflush(fp);
  • // 重置文件內部位置指針,讓位置指針指向文件開頭
  • rewind(fp);
  • ?
  • // 從文件中讀取學生信息
  • printf("\n讀取文件內容:\n");
  • while(fscanf(fp, "%s\t%d\t%d\t%f", name, &age, &studNo, &score) != EOF){
  • printf("%s %d %d %f\n", name, age, studNo, score);
  • }
  • fclose(fp);
  • ?
  • return EXIT_SUCCESS;
  • }
  • #include <stdio.h> #include <stdlib.h> #include <errno.h>#define FILE_PATH "D:/demo.txt" // 文件路徑int main(){char name[20]; // 姓名 int age; // 年齡 int studNo; // 學號 float score; // 平均分 FILE *fp; // 文件指針 // 判斷文件是否能夠正確創建/打開 if( (fp=fopen(FILE_PATH,"wt+")) == NULL ){perror(FILE_PATH);exit(1);}// 從控制臺輸入學生信息并寫入文件printf("請輸入姓名、年齡、學號和平均分(以空格分隔):\n");while(scanf("%s %d %d %f", name, &age, &studNo, &score)!= EOF){fprintf(fp,"%s\t%d\t%d\t%f\n", name, age, studNo, score);}// 刷新緩沖區,將緩沖區的內容寫入文件 fflush(fp);// 重置文件內部位置指針,讓位置指針指向文件開頭rewind(fp);// 從文件中讀取學生信息printf("\n讀取文件內容:\n");while(fscanf(fp, "%s\t%d\t%d\t%f", name, &age, &studNo, &score) != EOF){printf("%s %d %d %f\n", name, age, studNo, score);}fclose(fp);return EXIT_SUCCESS; } 運行結果: 請輸入姓名、年齡、學號和平均分(以空格分隔): 棍哥 25 1 99.99 碼農宿舍 2 3 89.9 www.coderbbs.com 3 2 100 ^Z // ^Z 為 Ctrl+Z 組合鍵,表示輸入結束讀取文件內容: 棍哥 25 1 99.989998 碼農宿舍 2 3 89.900002 www.coderbbs.com 3 2 100.000000
    用記事本打開 D:/demo.txt,可以看到剛才輸入的內容。

    程序主要分為三個步驟。

    1) 以讀寫方式打開文件

    wt+ 表示以讀寫方式打開文本文件,如果文件不存在,則創建,如果存在,清空內容。

    perror() 函數在程序退出前,輸出具體的錯誤信息。

    2) 從控制臺獲取學生信息,并寫入文件

    通過while循環不斷讀取學生信息,沒有限制具體數目,按 Ctrl+Z 組合鍵結束輸入。Ctrl+Z表示文件輸入結束,即EOF。

    注意:fprintf() 函數并不在結尾自動添加換行符(\n),顯示增加換行符的目的是:
    • 用記事本打開文件后可以清晰的看到學生信息,一個學生占據一行;否則所有學生信息都在一行,閱讀困難。
    • 后續讀取文件時,fscanf() 以換行符為讀取結束標志,沒有換行符將不能正確讀取數據,這一點與 scanf() 類似。

    兩點說明:
    • 輸入結束時并沒有將輸入內容保存到文件,而是停留在緩沖區,導致后邊讀取文件時沒有內容。所以必須通過 fflush() 函數刷新緩沖區,將緩沖區中的內容寫入文件。
    • 將緩沖區的內容寫入文件后,文件內部位置指針實際指向了文件結尾,必須重置位置指針,否則后續讀取會出錯。rewind() 函數將位置指針重置到文件開頭。

    3) 再從文件中讀取學生信息

    fscanf() 每次讀取一行信息。

    總結

    以上是生活随笔為你收集整理的C语言向文件写入内容并读取显示的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。