C语言向文件写入内容并读取显示
生活随笔
收集整理的這篇文章主要介紹了
C语言向文件写入内容并读取显示
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
將學(xué)生信息(姓名、年齡、學(xué)號(hào)和平均分)寫(xiě)入文件,然后讀取顯示出來(lái)。
要求:
代碼實(shí)現(xiàn): 復(fù)制純文本復(fù)制#include <stdio.h> #include <stdlib.h> #include <errno.h> ? #define FILE_PATH "D:/demo.txt" // 文件路徑 ? int main(){ char name[20]; // 姓名 int age; // 年齡 int studNo; // 學(xué)號(hào) float score; // 平均分 FILE *fp; // 文件指針 // 判斷文件是否能夠正確創(chuàng)建/打開(kāi) if( (fp=fopen(FILE_PATH,"wt+")) == NULL ){ perror(FILE_PATH); exit(1); } // 從控制臺(tái)輸入學(xué)生信息并寫(xiě)入文件 printf("請(qǐng)輸入姓名、年齡、學(xué)號(hào)和平均分(以空格分隔):\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); } // 刷新緩沖區(qū),將緩沖區(qū)的內(nèi)容寫(xiě)入文件 fflush(fp); // 重置文件內(nèi)部位置指針,讓位置指針指向文件開(kāi)頭 rewind(fp); ? // 從文件中讀取學(xué)生信息 printf("\n讀取文件內(nèi)容:\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; // 學(xué)號(hào) float score; // 平均分 FILE *fp; // 文件指針 // 判斷文件是否能夠正確創(chuàng)建/打開(kāi) if( (fp=fopen(FILE_PATH,"wt+")) == NULL ){perror(FILE_PATH);exit(1);}// 從控制臺(tái)輸入學(xué)生信息并寫(xiě)入文件printf("請(qǐng)輸入姓名、年齡、學(xué)號(hào)和平均分(以空格分隔):\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);}// 刷新緩沖區(qū),將緩沖區(qū)的內(nèi)容寫(xiě)入文件 fflush(fp);// 重置文件內(nèi)部位置指針,讓位置指針指向文件開(kāi)頭rewind(fp);// 從文件中讀取學(xué)生信息printf("\n讀取文件內(nèi)容:\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;
}
運(yùn)行結(jié)果:
請(qǐng)輸入姓名、年齡、學(xué)號(hào)和平均分(以空格分隔):
棍哥 25 1 99.99
碼農(nóng)宿舍 2 3 89.9
www.coderbbs.com 3 2 100
^Z // ^Z 為 Ctrl+Z 組合鍵,表示輸入結(jié)束讀取文件內(nèi)容:
棍哥 25 1 99.989998
碼農(nóng)宿舍 2 3 89.900002
www.coderbbs.com 3 2 100.000000
用記事本打開(kāi) D:/demo.txt,可以看到剛才輸入的內(nèi)容。
程序主要分為三個(gè)步驟。
perror() 函數(shù)在程序退出前,輸出具體的錯(cuò)誤信息。
注意:fprintf() 函數(shù)并不在結(jié)尾自動(dòng)添加換行符(\n),顯示增加換行符的目的是:
兩點(diǎn)說(shuō)明:
要求:
- 從控制臺(tái)輸入學(xué)生信息;
- 可以輸入任意數(shù)目的學(xué)生信息;
- 文件每行存儲(chǔ)一條學(xué)生信息,姓名、年齡、學(xué)號(hào)、平均分以tab(\t)為分隔。
代碼實(shí)現(xiàn): 復(fù)制純文本復(fù)制
用記事本打開(kāi) D:/demo.txt,可以看到剛才輸入的內(nèi)容。
程序主要分為三個(gè)步驟。
1) 以讀寫(xiě)方式打開(kāi)文件
wt+ 表示以讀寫(xiě)方式打開(kāi)文本文件,如果文件不存在,則創(chuàng)建,如果存在,清空內(nèi)容。perror() 函數(shù)在程序退出前,輸出具體的錯(cuò)誤信息。
2) 從控制臺(tái)獲取學(xué)生信息,并寫(xiě)入文件
通過(guò)while循環(huán)不斷讀取學(xué)生信息,沒(méi)有限制具體數(shù)目,按 Ctrl+Z 組合鍵結(jié)束輸入。Ctrl+Z表示文件輸入結(jié)束,即EOF。注意:fprintf() 函數(shù)并不在結(jié)尾自動(dòng)添加換行符(\n),顯示增加換行符的目的是:
- 用記事本打開(kāi)文件后可以清晰的看到學(xué)生信息,一個(gè)學(xué)生占據(jù)一行;否則所有學(xué)生信息都在一行,閱讀困難。
- 后續(xù)讀取文件時(shí),fscanf() 以換行符為讀取結(jié)束標(biāo)志,沒(méi)有換行符將不能正確讀取數(shù)據(jù),這一點(diǎn)與 scanf() 類似。
兩點(diǎn)說(shuō)明:
- 輸入結(jié)束時(shí)并沒(méi)有將輸入內(nèi)容保存到文件,而是停留在緩沖區(qū),導(dǎo)致后邊讀取文件時(shí)沒(méi)有內(nèi)容。所以必須通過(guò) fflush() 函數(shù)刷新緩沖區(qū),將緩沖區(qū)中的內(nèi)容寫(xiě)入文件。
- 將緩沖區(qū)的內(nèi)容寫(xiě)入文件后,文件內(nèi)部位置指針實(shí)際指向了文件結(jié)尾,必須重置位置指針,否則后續(xù)讀取會(huì)出錯(cuò)。rewind() 函數(shù)將位置指針重置到文件開(kāi)頭。
3) 再?gòu)奈募凶x取學(xué)生信息
fscanf() 每次讀取一行信息。總結(jié)
以上是生活随笔為你收集整理的C语言向文件写入内容并读取显示的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Form表单中method=post/g
- 下一篇: RMQ算法,求区间最值