C语言向文件写入内容并读取显示
生活随笔
收集整理的這篇文章主要介紹了
C语言向文件写入内容并读取显示
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
將學生信息(姓名、年齡、學號和平均分)寫入文件,然后讀取顯示出來。
要求:
代碼實現: 復制純文本復制#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,可以看到剛才輸入的內容。
程序主要分為三個步驟。
perror() 函數在程序退出前,輸出具體的錯誤信息。
注意:fprintf() 函數并不在結尾自動添加換行符(\n),顯示增加換行符的目的是:
兩點說明:
要求:
- 從控制臺輸入學生信息;
- 可以輸入任意數目的學生信息;
- 文件每行存儲一條學生信息,姓名、年齡、學號、平均分以tab(\t)為分隔。
代碼實現: 復制純文本復制
用記事本打開 D:/demo.txt,可以看到剛才輸入的內容。
程序主要分為三個步驟。
1) 以讀寫方式打開文件
wt+ 表示以讀寫方式打開文本文件,如果文件不存在,則創建,如果存在,清空內容。perror() 函數在程序退出前,輸出具體的錯誤信息。
2) 從控制臺獲取學生信息,并寫入文件
通過while循環不斷讀取學生信息,沒有限制具體數目,按 Ctrl+Z 組合鍵結束輸入。Ctrl+Z表示文件輸入結束,即EOF。注意:fprintf() 函數并不在結尾自動添加換行符(\n),顯示增加換行符的目的是:
- 用記事本打開文件后可以清晰的看到學生信息,一個學生占據一行;否則所有學生信息都在一行,閱讀困難。
- 后續讀取文件時,fscanf() 以換行符為讀取結束標志,沒有換行符將不能正確讀取數據,這一點與 scanf() 類似。
兩點說明:
- 輸入結束時并沒有將輸入內容保存到文件,而是停留在緩沖區,導致后邊讀取文件時沒有內容。所以必須通過 fflush() 函數刷新緩沖區,將緩沖區中的內容寫入文件。
- 將緩沖區的內容寫入文件后,文件內部位置指針實際指向了文件結尾,必須重置位置指針,否則后續讀取會出錯。rewind() 函數將位置指針重置到文件開頭。
3) 再從文件中讀取學生信息
fscanf() 每次讀取一行信息。總結
以上是生活随笔為你收集整理的C语言向文件写入内容并读取显示的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Form表单中method=post/g
- 下一篇: RMQ算法,求区间最值