亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

C標準庫源碼解剖(13):輸入輸出函數stdio.h

2024-07-10 13:27:20
字體:
來源:轉載
供稿:網友

 C標準中的I/O庫是一個比較龐大的庫,實現也比較復雜。顯然I/O庫的實現是依賴于操作系統的,不同的系統上I/O庫的實現機理是不一樣的。glibc中,I/O庫的核心實現在libio目錄下。有4個頭文件libio.h, iolibio.h, libioP.h, strfile.h, stdio.h,其中stdio.h是導出的標準C頭文件,其余都是內部實現。這里并不打算解剖整個I/O庫的源代碼(那樣可能一本書也說不完),只是概述性的介紹一下它的輪廓和所有標準接口的功能。我們學習I/O庫也是為了能在實踐中應用它,因此因此對C標準中所有的I/O接口要有個全面的了解。
    輸入/輸出函數主要在stdio.h中,對應的寬字符版本在wchar.h中,下面列出標準C中定義的所有接口:
    1、相關類型和常量:FILE、EOF在stdio.h中;wchar_t、wint_t、WEOF、WCHAR_MAX、WCHAR _MIN等在wchar.h中定義。size_t和NULL在stdio.h, wchar.h和stddef.h均會定義,同時使用其中的多個頭文件是無害的。
    2、fopen,fclose,fflush,frepoen,fwide,FOPEN_MAX,FILENAME_MAX:打開文件并返回數據流、關閉文件、清空數據流的緩沖區、將文件重新關聯到一個數據流、fwide在wchar.h中用于設置與測試流定向、可以同時打開的數據流最大個數、文件名的最大長度。
    文件訪問方式:”r”、”w”、”a”、”r+”、”w+”、”a+”,所有訪問方式后面都可以加上字母b,表示數據流保存二進制數據,而不是字符數據。
    3、setvbuf,setbuf,BUFSIZ,_IOFBF,_IOLBF,_IONBF:設置數據流的緩沖區、BUFSIZ緩沖區的默認長度、后面三個是緩沖模式,為數完全緩沖、行緩沖(寫入換行符或緩沖區滿時刷新緩沖區)、數據流不緩沖。
    4、stdin,stdout,stderr:標準輸入流、輸出流、錯誤流。除stderr之外,另外兩個數據流都緩沖。C語言程序執行時,會預先打開這3種文本流。
    5、fseek,ftell,rewind,fgetops,fsetpos:設置流的讀寫位置、返回流的當前讀寫位置、將流的位置恢復到開頭、fgetpos/fsetpos用于獲取或設置流的位置,其值放在fpos_t類型的參數中。定位碼有SEEK_SET, SEEK_CUR,SEEK_END。
    6、fgetc,fgetwc,getc,getwc,getchar,getwchar,ungetc,ungetwc:從流中讀取下一個字符并作為int類型的值返回、getchar則從標準輸入流中讀取、ungetc系列將字符c推回到輸入流中。
    7、fgets,fgetws,gets:從流中讀取一個長為n的字符串到s中,直到遇到換行符、文件末尾或讀取了n-1個字符,然后在字符串末尾加上終止符、gets則從標準輸入流中讀取。
    8、fscanf,fwscanf,scanf,wscanf,sscanf,swscanf:格式化輸入函數。從流中讀取字符并根據控制字符串把字符轉換成相應的值??刂谱址竺娴拿總€參數應為指針,從輸入流讀取的值轉換之后存放在指針指向的對象中。
    控制字符串:除空白符和%號以外的任何其他字符都要匹配輸入流中下一個字符。如果不匹配,則發生沖突,終止轉換操作。指針參數要有正確的個數和正確的類型,符合控制字符串中的轉換說明。
    scanf系列的轉換說明以%號開始,然后依次出現下列元素:
    (1)可選的賦值取消標志符:*
    (2)可選的最大字段寬度:表示為正的十進制整數
    (3)可選的長度說明符:有hh,h,l,ll,j,z,t或L
    (4)必要的轉換說明符:有a,c,d,e,f,g,i,n,o,p,s,u,x,%或[...]。
    常用的轉換說明:%d,%i,%u,%o,%x,%c,%s,%f,%e,%%。
    9、fputc,fputwc,putc,putwc,putchar,putwchar:向輸出流中寫入一個字符、putchar則向標準輸出流寫入。
    10、fputs,fputws,puts:向輸出流中寫入一個字符串,不包括null終止符、puts則向標準輸出流寫入。
    11、fprintf,printf,sprintf,snprintf,fwprintf,wprintf,swprintf:格式化輸出函數。根據控制字符串表示的格式,把輸出轉換成一系列格式發送到輸出流中。
    printf系列的轉換說明以%號開始,然后依次出現下列元素:
    (1)0個或多個標志字符:-,+,0,#或空格,修改轉換操作的含義
    (2)可選的最小字段寬度:表示為十進制整數常量
    (3)可選的精度說明:表示為小數點加一個十進制整數
    (4)可選的長度說明符:有ll,l,L,h,hh,j,z或t
    (5)轉換操作:a,A,c,d,e,E,f,g,G,i,n,o,p,s,u,x,X或%。
    常用的轉換操作:%d,%12d,%u,%o,%c,%s,%p,%f,%e,%%。
    12、vfprintf,vprintf,vsprintf,vfscanf,vscanf,vsscanf,vfwprintf,vwprintf,vswprintf,vfwscanf,vwscanf,vswscanf:與上面的printf和scanf系列類似,只不過不是用省略號作為可變參數,而用stdarg.h中的va_list類型作為一個參數,這就允許編程人員定義自己的格式化輸入輸出函數。
    13、fread,fwrite:從流中讀取count個指定長度的元素到數組中、把數組中的count個指定的長度的元素寫入到流中,返回實際讀取或寫入的項數。
    14、feof,ferror,clearerr:判斷流是否到達末尾(到達返回非0,沒到達返回0)、返回流的錯誤狀態(有錯誤返回非0,沒錯誤返回0)、清除流中的任何文件結束標志或錯誤標志。
    15、remove,rename:刪除指定文件、重命名指定文件。
    16、tmpfile,tmpnam,L_tmpnam,TMP_MAX:tmpfile生成一個臨時文件并以可讀方式打開,文件關閉或程序終止時文件會被刪除、tmpnam生成一個不與當前各個文件名沖突的新文件名,保存在參數buf中、L-tmpnam為buf的最小字符個數、TMP_MAX為連續調用tmpnam的最大次數,不小于25。

    17、perror:打印保存在errno全局變量中的當前錯誤碼的消息描述。
    
    每個標準I/O函數的代碼并不長,因為glibc在內部實現了一個基本的I/O庫,標準I/O函數都是調用這些內部函數來完成工作的。所有的內部函數接口都在iolibio.h中聲明,基本上每個標準I/O函數都對應一個內部函數。內部函數名在標準函數名前加了__IO_字樣,數據流類型也使用內部__IO_FILE類型,標準的FILE類型就是直接用__IO_FILE類型定義的。libio.h中則聲明了一些內部實現需要使用的類型和常量,strfile.h聲明了與緩沖區、緩沖字符有關的一些特性。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品视频www| 亚洲国产精品久久91精品| 狠狠久久五月精品中文字幕| 欧美性生交大片免网| xvideos成人免费中文版| 亚洲一区国产精品| 性欧美长视频免费观看不卡| 国产成人亚洲精品| 欧洲美女7788成人免费视频| 欧美综合激情网| 欧美黑人巨大精品一区二区| 亚洲精品ady| 欧美激情免费看| 欧美日韩高清区| 国产精品久久久久久久久免费看| 国产精品91久久| 亚洲视频专区在线| 亚洲高清在线观看| 欧美亚洲日本网站| 97在线免费观看视频| 亚洲女同性videos| 国产精品一区二区三区毛片淫片| 国产精品永久免费在线| 亚洲丁香婷深爱综合| 亚洲一级片在线看| 青青a在线精品免费观看| 久久人体大胆视频| 国产精品成av人在线视午夜片| 亚洲大胆人体视频| 亚洲女人天堂色在线7777| 久久久999精品免费| 夜色77av精品影院| 宅男66日本亚洲欧美视频| 国产精品嫩草影院久久久| 亚洲国产日韩欧美综合久久| 韩日欧美一区二区| 久久在精品线影院精品国产| 欧美午夜激情小视频| 国产在线视频一区| 国产精品扒开腿做爽爽爽的视频| 欧美成人在线影院| 91av在线播放视频| 亚洲精品91美女久久久久久久| 国产精品无av码在线观看| 欧美成人h版在线观看| 欧美精品第一页在线播放| 亚洲国产欧美一区| 在线成人一区二区| 国产成人自拍视频在线观看| 91精品久久久久久久久久| 日韩视频免费在线观看| 精品在线欧美视频| 伊人久久精品视频| 久久中文字幕在线视频| 日韩有码视频在线| 日韩在线欧美在线| 91成人在线视频| 亚洲欧洲av一区二区| 亚洲性猛交xxxxwww| 日韩有码片在线观看| 亚洲影影院av| 国产一区二区三区在线免费观看| 中文字幕欧美精品在线| 国产一区深夜福利| 国产成人a亚洲精品| 久久久免费观看| 国产欧美日韩免费看aⅴ视频| 欧美成人第一页| 日韩麻豆第一页| 久久久久久91| 国产成人综合精品在线| 欧美日韩激情小视频| 97超视频免费观看| 欧美刺激性大交免费视频| 中文字幕成人在线| 国产精品高潮粉嫩av| 日韩欧美极品在线观看| 亚洲国产欧美在线成人app| 日韩av中文字幕在线| 91精品美女在线| 九九久久久久99精品| 欧美性受xxx| 亚洲电影第1页| 欧美日韩免费区域视频在线观看| 福利二区91精品bt7086| 91在线观看免费高清完整版在线观看| 欧美黄网免费在线观看| 欧美视频在线免费| 欧美大片第1页| 青青a在线精品免费观看| 久久中文精品视频| 92看片淫黄大片欧美看国产片| 亚洲精品久久久一区二区三区| 国产精品免费电影| 欧美视频中文在线看| 日韩av片永久免费网站| 国产精品久久久久久av| 亚州av一区二区| 国产欧美日韩丝袜精品一区| 色噜噜狠狠狠综合曰曰曰| 国产一区二区三区在线观看视频| 91免费看片在线| 日韩欧美国产免费播放| 一二美女精品欧洲| 久久影视免费观看| 欧美与黑人午夜性猛交久久久| 亚洲精品黄网在线观看| 欧美日韩免费区域视频在线观看| 日韩中文字幕精品视频| 午夜剧场成人观在线视频免费观看| 在线成人中文字幕| 国产精品视频导航| 日韩中文在线视频| 久久久女人电视剧免费播放下载| 欧美亚洲激情在线| 欧美激情网站在线观看| 国产精品女视频| 欧美性视频精品| 岛国精品视频在线播放| 北条麻妃一区二区三区中文字幕| 91亚洲国产成人精品性色| 久久五月天综合| 亚洲网站在线看| 九九精品在线视频| 北条麻妃久久精品| 欧美日韩精品国产| 欧美日韩免费在线观看| 久久久久久久久久久亚洲| 欧美亚洲国产另类| 欧美日韩国产精品一区二区三区四区| 亚洲激情自拍图| 亚洲人成电影网站| 午夜免费久久久久| 精品二区三区线观看| 欧美电影免费在线观看| 午夜精品久久久久久久99黑人| 亚洲男人的天堂在线播放| 热99精品里视频精品| 日韩中文字幕免费视频| 久久精品一偷一偷国产| 欧美老少做受xxxx高潮| 国产在线精品自拍| 中文字幕日韩精品在线观看| 国产精品一二三视频| 69视频在线免费观看| 在线亚洲男人天堂| 久久久午夜视频| 欧美日韩国产在线播放| 欧美激情一区二区三区高清视频| 久久久久999| 久99九色视频在线观看| 免费91麻豆精品国产自产在线观看| 国产亚洲人成网站在线观看| 国产精品爱久久久久久久| 2019亚洲日韩新视频| 不卡av日日日| 欧美午夜影院在线视频| www.亚洲一区| 国产精品国产亚洲伊人久久| 欧美麻豆久久久久久中文| 国产欧美最新羞羞视频在线观看| 亚洲精品视频网上网址在线观看| 欧美视频在线看| 庆余年2免费日韩剧观看大牛|