1、fclose(fp);就清理了所有緩存,并且確保把緩存寫入了文件,而且還是線程互斥的。你可以fclose后立即打開文件,再讀取文件內(nèi)容確認(rèn)一下,如果寫入成功,那就該是寫入的內(nèi)容。
成都創(chuàng)新互聯(lián)從2013年創(chuàng)立,先為無為等服務(wù)建站,無為等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為無為企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
2、fopen 使用 wb 方式打開或新建一個二進(jìn)制文件,只允許寫數(shù);若文件不存在則新建,若已存在則刪除在新建,你也可以理解為全部覆蓋。
3、執(zhí)行寫文件的操作時,先將數(shù)據(jù)寫入內(nèi)存“緩沖區(qū)”,待內(nèi)存“緩沖區(qū)”裝滿后再寫入文件。 因此當(dāng)程序運行時雖然進(jìn)行了寫數(shù)據(jù)操作,但是如果寫入的數(shù)據(jù)沒有裝滿內(nèi)存中的緩沖區(qū),就不會將數(shù)據(jù)寫入到磁盤文件中。
4、首先打開VC++0。選擇文件,新建。選擇C++ source file 新建一個空白文檔。先聲明頭文件#include stdio.h。
第一次scanf,按%c的要求,只掃描buffer中的一個字節(jié),但是buffer中并不數(shù)據(jù),于是要求鍵盤輸入數(shù)據(jù)到buffer,此時的1回車代表向buffer中輸入了:31H,0AH。
if(scanf(%d,&score[k])!=1)你這一句scanf(%d %d,&num[k],&score[k]);已經(jīng)讀入成績了,就算輸入錯誤也不能做出處理。
因為第一個scanf 并不是直接你輸入就讀取的,它是從緩沖區(qū)讀取數(shù)據(jù)的。
scanf(%*[^\n]%*c)是用掃描集將緩沖區(qū)中的字符全部讀取來實現(xiàn)清除緩沖區(qū)的動作。
清空緩存區(qū)用fflush(stdin);這句代碼。鍵盤輸入的東西都是放在緩沖區(qū)的這款區(qū)域,有變量過來了就帶走,沒有變量就在那里呆著等待一個變量來帶它走。
scanf()函數(shù)應(yīng)該只是掃描stdin流,這個殘存信息是在stdin中 解決就要在scanf()函數(shù)之后加個fflush(stdin)。