版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、CHAPTE 77.1 Standard Input and Output7.2 Formatted Output-Printf7.3 Variable-length Argument Lists7.4 Formatted Input Scanf7.5 File Access7.6 Error Handling-Stderr and Exit7.6 Line Input and Output7.8 Miscellaneous Functions7.1 Standard Input and Output輸入輸出函數(shù)所謂輸入輸出是以計(jì)算機(jī)為主體而言。從計(jì)算機(jī)向外部輸出設(shè)備(例如顯示器)輸出數(shù)據(jù)稱為
2、“輸出”,從輸入設(shè)備(例如鍵盤)向計(jì)算機(jī)輸入數(shù)據(jù)稱為“輸入”。C語言本身不提供輸入輸出語句,輸入和輸出操作是由函數(shù)來實(shí)現(xiàn)的。C語言函數(shù)庫中有一批“標(biāo)準(zhǔn)輸入輸出函數(shù)”,包括:putchar(),getchar(),printf(),scanf(),puts(),gets().在使用c語言函數(shù)時(shí),要用到預(yù)編譯命令“#include”將有關(guān)的頭文件包括到源文件中;在使用標(biāo)準(zhǔn)輸入輸出庫函數(shù)時(shí),要用到”stdio.h”- #include 或#include “stdio.h”字符數(shù)據(jù)的輸入輸出putchar函數(shù)(字符輸出函數(shù))putchar函數(shù)的作用是向終端輸出一個字符,例如 putchar(c);
3、c可以是字符型變量或整型變量 例子: 例1 輸出單個字符#include void main( void ) char a, b, c; a = B; b = O; c = Y; putchar( a ); putchar( b ); putchar( c ); putchar( n ); putchar( 101 ); putchar( ); putchar( x61 ); 程序的運(yùn)行結(jié)果是 BOY Aa字符數(shù)據(jù)的輸入輸出getchar()函數(shù) 函數(shù)的作用是從終端輸入一個字符。此函數(shù)沒有參數(shù),其一般形式為 getchar() 返回下一從標(biāo)準(zhǔn)輸入設(shè)備上輸入的字符的ASCII碼,如果到文件末尾則
4、返回EOF。例2 #include /*該預(yù)處理命令在tc里不可少*/ void main( void ) char c; c = getchar(); putchar( c );/*putchar(getchar();*/ /*printf(“%c”,getchar();*/ 7.2 Formatted Output-Printfint printf(char *format, arg1, arg2)/* translates internal values to characters*/Ordinary characters 原始字符Conversion specifications 格式
5、說明formatReturns the number of characters printed返回輸出字符的數(shù)量7.2 Formatted Output-PrintfOrdinary characters : characters which are copied to the output stream; /* 原樣輸出的字符串*/Conversion specifications: begin with a % and end with a conversion character. /*以%為開始,到轉(zhuǎn)義字符截至*/printf(“this is a interger: %d”,iva
6、l);7.2 Formatted Output-Printfprintf(“The result is: %d,%d”,x,y);Ordinary characters Conversion specificationsConversion specificationsVariables list7.2 Formatted Output-Printf格式字符 對不同類型的數(shù)據(jù)用不同的格式字符。 有以下幾種格式字符d格式符用來輸出整數(shù),整數(shù)是以十進(jìn)制的形式出現(xiàn)。有以下幾種用法%d,按照整數(shù)的實(shí)際長度輸出。 %md,m為指定的輸出字段的寬度。如果數(shù)據(jù)的位數(shù)小于m,則左端補(bǔ)以空格;如果大于m,則按照
7、實(shí)際位數(shù)輸出。若a=123,d=12345則: printf(“%4d,%4d”,a,b); 輸出: 123,12345 ( 代表空格) %ld,輸出長整型數(shù)據(jù)。如:long a=135790; printf(“%ld”,a);/*若用printf(“%d”,a);可以嗎?*/ 輸出:135790 對長整型數(shù)據(jù)也可以制定字段寬度,如printf(“%8ld”,a); 輸出: 135790 o格式符以八進(jìn)制形式輸出整數(shù)。由于是將內(nèi)存單元中的各位的值按照八進(jìn)制形式輸出,因此輸出的數(shù)值不帶符號。對長整型,用“%lo”格式,同樣可以加字段寬度。如:int a=-1; printf(“%d,%o“,a,
8、a);輸出結(jié)果為:-1,1777777.2 Formatted Output-Printfx格式符 以十六進(jìn)制形式輸出整數(shù)。同樣不會出現(xiàn)負(fù)的十六進(jìn)制數(shù)。u格式符用來輸出unsigned型數(shù)據(jù),即無符號數(shù),以十進(jìn)制形式輸出。實(shí)際上,一個有符號整數(shù)也可以用%u格式輸出;反之,一個unsigned也可以用%d、%o、%x格式輸出。Int a=-1;printf(“%x,%d,%o”,a,a,a);輸出:ffff,-1,177777Main() unsigned int a=65535; int b=-2; printf(“a=%d,%o,%x,%un”,a,a,a,a); printf(“a=%d,
9、%o,%x,%un”,b,b,b,b);運(yùn)行結(jié)果:-1,177777,ffff,65535 -2,177776,fffe,655347.2 Formatted Output-Printfc格式符用來輸出一個字符。 s格式符用來輸出一個字符串。有幾種用法%s,按照實(shí)際長度輸出字符串。 %ms,輸出的字符串占m列。如果字符串的長度大于m,則突破m的限制,將字符串全部輸出;反之,則左補(bǔ)空格。 %-ms,如果字符串的長度小于m,則在m范圍內(nèi),字符串向左靠,右補(bǔ)空格。 %m.ns,輸出占m列,但只取字符串中左端n個字符。這n個字符輸出在m列的右側(cè),左補(bǔ)空格。 %-m.ns,輸出占m列,但只取字符串中左端
10、n個字符。這n個字符輸出在m列的左側(cè),右補(bǔ)空格。如果nm,則m自動取n值,以保證n個字符正常輸出。7.2 Formatted Output-Printf:%s:hello, world:%10s:hello, world:%.10s:hello, worl:%-10s:hello, world:%.15s:hello, world:%-15s:hello, world :%15.10s: hello, worl:%-15.10s:hello, worl :7.2 Formatted Output-Printff格式符 用來輸出實(shí)數(shù),以小數(shù)形式輸出。有以下幾種用法 %f,不指定字段寬度,由系統(tǒng)自
11、動指定,使整數(shù)部分全部輸出,并輸出6位小數(shù)。 %m.nf,指定輸出數(shù)據(jù)共占m列,其中有n位小數(shù)。如果數(shù)值長度小于m,則左補(bǔ)空格。 %-m.nf與%m.nf基本相同,只是輸出的數(shù)值向左端靠,右端補(bǔ)空格。main() float f=123.456; printf(“%f %10f %10.2f%.2f%-10.2fn”,f,f,f,f,f); 輸出如下:123.456001123.456001123.46123.46 123.467.2 Formatted Output-Printfdint; decimal numberoint, unsigned octal number (without
12、a leading 0)x, Xint unsigned hexadecimal numberuint unsigned decimal numbercint single characterschar *; print characters from the string until a 0 or the number of characters given by the precisionfdouble; -m.dddddd, where the number of ds is given by the pricision7.2 Formatted Output-Printfd帶有符號的1
13、0進(jìn)制整型數(shù)的輸出o8進(jìn)制無符號整型數(shù)的輸出x, X16進(jìn)制無符號整型數(shù)的輸出u無符號的10進(jìn)制整型數(shù)的輸出c單個字符的輸出s字符串的輸出f以小數(shù)形式輸出浮點(diǎn)數(shù)或雙精度數(shù)據(jù),含6位小數(shù)7.2 Formatted Output-PrintfBetween the % and the conversion(附加格式說明)-specifies left adjustment of the converted argument.mspecified the minimum field width.separates the field width from the precision.nspecifi
14、es the maxim number of character to printed from a string or the digits.ha integer to be printed as a short.l, La integer to be printed as a long.7.2 Formatted Output-PrintfBetween the % and the conversion(附加格式說明)-左對齊m最小輸出寬度.分割輸出寬度和有效位數(shù).n最大小數(shù)位數(shù)或允許輸出的字符串長度hShort類型數(shù)據(jù)的輸出.l, L用于長整型數(shù)據(jù)的輸出.7.2 Formatted Ou
15、tput-Printf7.4 Formatted Input-Scanfint scanf(char *frm, arg1, arg2 .)each of which must be a pointer7.4 Formatted Input-Scanfscanf(格式控制,地址列表 ); “格式控制”的含義同printf()函數(shù),“地址列表”是由若干地址組成的列表,可以是變量的地址,或字符串的首地址。 Main() int a,b,c; scanf(“%d%d%d”,&a,&b,&c); printf(“%d,%d,%dn”,a,b,c); (1) 在進(jìn)行數(shù)據(jù)輸入時(shí), “%d%d%d”數(shù)據(jù)與數(shù)
16、據(jù)之間可以用一個空格或多個空格,回車鍵、跳格鍵tab來分隔。(2)若在“格式控制”中除了格式說明之外,還有其他字符,則數(shù)據(jù)與輸入分隔應(yīng)該輸入相應(yīng)字符:scanf(“%d,%d”,&a,&b); int day,year;char monthname20;scanf(“%d %s %d”,&day,monthname,&year);格式說明 和printf()函數(shù)中的格式說明相似,以%開始,以一個格式字符結(jié)束,中間可以插入附加字符。說明 對unsigned型數(shù)據(jù),可以用%u、%d、%o和%x格式輸入。 可以指定輸入數(shù)據(jù)所占列數(shù),系統(tǒng)自動截取所需數(shù)據(jù)。 Scanf(“%3c”,&ch); Scan
17、f(“%3d%3d”,&a,&b); %后的“*”附加說明符,用來表示跳過它相應(yīng)的數(shù)據(jù)。 Scanf(“%2d %*3d %2d”,&a,&b); 輸入數(shù)據(jù)時(shí),不能規(guī)定精度。 例如:scanf(“%7.2f”,&a); 是不合法的輸入:abc 結(jié)果:a=ch輸入:123456 結(jié)果:123 =a 456 =b輸入:1234567結(jié)果:12=a 67=b7.4 Formatted Input-Scanfscanf()函數(shù)的執(zhí)行中應(yīng)注意的問題scnaf()函數(shù)中的“格式控制”后面應(yīng)當(dāng)是變量地址,而不應(yīng)是變量名。 如果在“格式控制”字符串中除了格式說明以外還有其它字符,則在輸入 數(shù)據(jù)時(shí)應(yīng)輸入與這些字
18、符相同的字符。如: Scanf(“%d:%d:%d”,&h,&m,&s); 輸入應(yīng)該用以下形式: 12:23:11 在用“%c”格式輸入字符時(shí),空格字符和“轉(zhuǎn)義字符”都作為有效字符輸入。Scanf(“%c%c%c”,&c1,&c2,&c3);abc 則a-c1, -c2,b-c3,正確的方法是abc 在輸入數(shù)據(jù)時(shí),遇到以下幾種情況時(shí)該數(shù)據(jù)認(rèn)為結(jié)束 遇到空格、或“回車”或TAB鍵; 遇到寬度結(jié)束; Scanf(“%3d%3d”,&a,&b); 遇到非法輸入。7.4 Formatted Input-ScanfScanf(“%d%d”,&a,&b);123 456123 -a, 456-bScanf
19、(“%d%c%f”,&a,&b,&c);1234h123.451234 -a,h -b,123.45 -c7.5 File Access 文件類型指針文件結(jié)構(gòu)體FILE 緩沖文件系統(tǒng)為每個正使用的文件在內(nèi)存開辟文件信息區(qū)文件信息用系統(tǒng)定義的名為FILE的結(jié)構(gòu)體描述FILE定義在stdio.h中typedef struct int _fd; /文件號 int _cleft; /緩沖區(qū)中剩下的字符數(shù) int _mode; /文件操作方式 char *_next; /文件當(dāng)前讀寫位置 char *_buff; /文件緩沖區(qū)位置FILE; FILE f5;7.5 File Access文件類型指針指針
20、變量說明: FILE *fp;用法:文件打開時(shí),系統(tǒng)自動建立文件結(jié)構(gòu)體,并把指向它的指針返回來,程序通過這個指針獲得文件信息,訪問文件文件關(guān)閉后,它的文件結(jié)構(gòu)體被釋放文件名文件使用方式文件類型指針C程序操作系統(tǒng)磁盤Open a file: FILE *fopen(char *name, char *mode);File pointer: FILE *fp; /* point to a structure that contain the information about the file*/ name : file name; mode : how to access the opened
21、file; fp=fopen(“c:workx.c”, “r”);7.5 File Access FILE *fp; char *filename=“c:fengyibkctest.dat” fp= fopen(filename,”r”); 例 文件打開與測試 FILE *fp; fp=fopen(“aa.c”,“w”); if(fp=NULL) printf(“File open error!n”); exit(0); “r” open a file for read;“w” open a file for write;“a” open a file for append;“b” acces
22、s a file as binary file;fp=fopen(“c:workx.c”, “w”);fp=fopen(“c:workx.c”, “a”);fp=fopen(“c:workx.c”, “wb”);7.5 File Access 1 If a file that does not exist for w or a, it is create if possible;如果文件不存在,“w”和“a”將創(chuàng)建該文件 2 Opening an existing file for w causes the old contents to be discarded, wile opening for a preserves them. 以“w”打開文件將刪除文件原有的內(nèi)容, “a”則不會3 If try to read a file which not existing or no permission, fopen will return NULL; 如果“r”方式打開的文件不存在,則fopen函數(shù)返回NULLIf there is any error,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 跨領(lǐng)域?qū)W習(xí)在提高綜合職業(yè)素養(yǎng)中的作用研究
- 混合式學(xué)習(xí)模式下學(xué)生自主學(xué)習(xí)的培養(yǎng)策略
- 2025年冀教版八年級歷史上冊月考試卷含答案
- 2025年人教新起點(diǎn)選修6歷史下冊月考試卷
- 二零二五年度健康醫(yī)療合同中的患者隱私保護(hù)與責(zé)任承擔(dān)4篇
- 二零二五年度模具鋼材市場分析與風(fēng)險(xiǎn)評估合同4篇
- 二零二五年度獼猴桃樹種子知識產(chǎn)權(quán)保護(hù)及商業(yè)化應(yīng)用合同4篇
- 二零二五年度煤炭運(yùn)輸合同環(huán)境風(fēng)險(xiǎn)防范范本4篇
- 二零二五年度泥工貼磚工程設(shè)計(jì)與施工總承包合同4篇
- 2025年度歐盟電子商務(wù)政策實(shí)施細(xì)則合同4篇
- 2025水利云播五大員考試題庫(含答案)
- 老年髖部骨折患者圍術(shù)期下肢深靜脈血栓基礎(chǔ)預(yù)防專家共識(2024版)解讀
- 中藥飲片驗(yàn)收培訓(xùn)
- 手術(shù)室??谱o(hù)士工作總結(jié)匯報(bào)
- DB34T 1831-2013 油菜收獲與秸稈粉碎機(jī)械化聯(lián)合作業(yè)技術(shù)規(guī)范
- 蘇州市2025屆高三期初陽光調(diào)研(零模)政治試卷(含答案)
- 創(chuàng)傷處理理論知識考核試題及答案
- (正式版)HG∕T 21633-2024 玻璃鋼管和管件選用規(guī)定
- 《義務(wù)教育數(shù)學(xué)課程標(biāo)準(zhǔn)(2022年版)》測試題+答案
- 殘疾軍人新退休政策
- 白酒代理合同范本
評論
0/150
提交評論