如同printf與scanf的關(guān)系一樣,fprintf和fscanf也是如此,fprintf負(fù)責(zé)向文件里寫數(shù)據(jù),fscanf函數(shù)則可以從文件里讀數(shù)據(jù),它的函數(shù)原型如下:
int fscanf(FILE *stream, char *format[,argument...]);
作為格式化寫數(shù)據(jù)函數(shù),它的參數(shù)同樣比scanf也多一個(gè)參數(shù),即第一個(gè)參數(shù)文件指針,表示讀取的文件目標(biāo),其余參數(shù)和scanf一樣,按照相應(yīng)的格式進(jìn)行讀取,返回值表示讀取數(shù)據(jù)的字節(jié)數(shù)。比如:
char str[100]; fscanf(fp,"%s",str);
則表示從fp所指向的文件中進(jìn)行讀數(shù)據(jù),與空格或換行結(jié)束,將結(jié)果保存到str數(shù)組中。
更多fscanf的格式如下表:
格式 | 作用 |
%d | 讀入一個(gè)十進(jìn)制整數(shù) |
%i | 讀入十進(jìn)制,八進(jìn)制,十六進(jìn)制整數(shù),與%d類似,但是在編譯時(shí)通過數(shù)據(jù)前置或后置來區(qū)分進(jìn)制,如加入“0x”則是十六進(jìn)制,加入“0”則為八進(jìn)制。例如串“031”使用%d時(shí)會(huì)被算作31,但是使用%i時(shí)會(huì)算作25 |
%u | 讀入一個(gè)無符號(hào)十進(jìn)制整數(shù) |
%f %F %g %G | 用來輸入實(shí)數(shù),可以用小數(shù)形式或指數(shù)形式輸入 |
%x %x | 讀入十六進(jìn)制整數(shù) |
%o | 讀入八進(jìn)制整數(shù) |
%s | 直到遇到一個(gè)空格字符(空格字符可以是空白、換行和制表符) |
%c | 單個(gè)字符:讀取下一個(gè)字符。如果指定了一個(gè)不為 1 的寬度 width,函數(shù)會(huì)讀取 width 個(gè)字符,并通過參數(shù)傳遞,把它們存儲(chǔ)在數(shù)組中連續(xù)位置。在末尾不會(huì)追加空字符 |
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競(jìng)賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點(diǎn)擊了解:
一點(diǎn)編程也不會(huì)寫的:零基礎(chǔ)C語言學(xué)練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進(jìn)階課程
從零到寫出一個(gè)爬蟲的Python編程課程
只會(huì)語法寫不出代碼?手把手帶你寫100個(gè)編程真題的編程百練課程
信息學(xué)奧賽或C++選手的 必學(xué)C++課程
藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競(jìng)賽課入門課程
手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程