c語(yǔ)言 輸入和輸出課件_第1頁(yè)
c語(yǔ)言 輸入和輸出課件_第2頁(yè)
c語(yǔ)言 輸入和輸出課件_第3頁(yè)
c語(yǔ)言 輸入和輸出課件_第4頁(yè)
c語(yǔ)言 輸入和輸出課件_第5頁(yè)
已閱讀5頁(yè),還剩39頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第3章標(biāo)準(zhǔn)輸入與輸出3.1概述3.2字符輸入輸出函數(shù)3.3格式化輸入和輸出函數(shù)3.4輸入和輸出函數(shù)的討論1整理ppt第3章標(biāo)準(zhǔn)輸入與輸出3.1概述3.2字符輸入輸出通過(guò)終端輸入(如鍵盤(pán)、鼠標(biāo)等),也稱(chēng)為標(biāo)準(zhǔn)輸入(standardinput),直接向終端輸出(如顯示器、打印機(jī)等),也稱(chēng)為標(biāo)準(zhǔn)輸出(standardoutput)。3.1概述C語(yǔ)言本身沒(méi)有提供輸入輸出語(yǔ)句,C語(yǔ)言中的所有I/O操作都是通過(guò)函數(shù)調(diào)用來(lái)實(shí)現(xiàn),而這些并非C語(yǔ)言一部分的輸入輸出函數(shù)均以目標(biāo)級(jí)程序的方式提供,并存放在一個(gè)C標(biāo)準(zhǔn)函數(shù)庫(kù)中。每一個(gè)標(biāo)準(zhǔn)庫(kù)都有一個(gè)相應(yīng)的頭文件,該頭文件包含了該庫(kù)中所有函數(shù)的函數(shù)原型及其相關(guān)信息。在調(diào)用這些庫(kù)函數(shù)時(shí),要用預(yù)處理命令“#include”將有關(guān)的“頭文件”包括到用戶(hù)源程序中。標(biāo)準(zhǔn)輸入輸出庫(kù)函數(shù)對(duì)應(yīng)的頭文件是“stdio.h”。stdio是standardinput&output的縮寫(xiě)。因此,讀者在調(diào)用標(biāo)準(zhǔn)輸入輸出庫(kù)函數(shù)時(shí),你的源程序開(kāi)頭應(yīng)該有如下編譯預(yù)處理命令:

#include<stdio.h>

#include"stdio.h"2整理ppt通過(guò)終端輸入(如鍵盤(pán)、鼠標(biāo)等),也稱(chēng)為標(biāo)準(zhǔn)輸入(st3.2字符輸入輸出函數(shù)3.2.1字符輸出函數(shù)putchar()putchar()函數(shù)是向屏幕一個(gè)字符,其調(diào)用格式為:

putchar(ch);

其中ch為一個(gè)字符變量、字符常量或整型常量。/*本程序測(cè)試多種類(lèi)型數(shù)據(jù)作putchar()函數(shù)參數(shù)的輸出情況*/#include<stdio.h>main(){charc=’A’;/*定義字符變量并初始化*/

putchar(c);

/*輸出變量C的值即字符A*/

putchar(’A’);/*輸出字符A*/putchar(’\x41’);/*輸出字符A,它以轉(zhuǎn)義字符表示,十六進(jìn)制*/

putchar(0x41);/*直接用ASCII碼值輸出字符A*/

putchar(’\101’);/*輸出字符A,它以轉(zhuǎn)義字符表示,八進(jìn)制*/}3整理ppt3.2字符輸入輸出函數(shù)3.2.1字符輸出函數(shù)putch3.2.2帶緩沖區(qū)的字符輸入函數(shù)getchar()getchar()函數(shù)的功能是從標(biāo)準(zhǔn)輸入文件(通常是鍵盤(pán),亦指磁盤(pán)文件)讀取一字節(jié)代碼(即一個(gè)字符),并回顯。所謂回顯,是指輸入一個(gè)字符的同時(shí)又在屏幕上顯示出該字符。這是標(biāo)準(zhǔn)C提供的字符輸入函數(shù),因此也是最常用的字符輸入(尤其是鍵盤(pán)輸入)函數(shù)。鍵盤(pán)緩沖區(qū)(實(shí)際上應(yīng)該稱(chēng)作輸入流即stdin流)。所謂鍵盤(pán)緩沖區(qū),是指在內(nèi)存開(kāi)辟的一片臨時(shí)單元,用來(lái)暫時(shí)存放從鍵盤(pán)輸入的字符。getchar()函數(shù)是帶鍵盤(pán)緩沖區(qū)的輸入函數(shù),是指當(dāng)從鍵盤(pán)輸入字符時(shí),這些字符先存放在鍵盤(pán)緩沖區(qū),如果不敲回車(chē)鍵,getchar()函數(shù)并沒(méi)有真正被執(zhí)行(即所謂被激活);僅當(dāng)回車(chē)鍵也被送入鍵盤(pán)緩沖區(qū)后,getchar()函數(shù)才從鍵盤(pán)緩沖區(qū)中讀取一個(gè)字符。4整理ppt3.2.2帶緩沖區(qū)的字符輸入函數(shù)getchar()強(qiáng)調(diào)以下三點(diǎn):

(1)調(diào)用getchar()函數(shù)輸入字符時(shí),必須用另一個(gè)變量(字符變量或整型變量)接收輸入的字符。例如:

ch=getchar();

(2)調(diào)用getchar()函數(shù)輸入字符時(shí),僅當(dāng)敲入回車(chē)鍵后,函數(shù)才被激活。(3)調(diào)用該函數(shù)時(shí),輸入的每一個(gè)字符,包括空白符(即空格、制表符和回車(chē)符),都被送存到鍵盤(pán)緩沖區(qū)。5整理ppt強(qiáng)調(diào)以下三點(diǎn):(1)調(diào)用getchar()函數(shù)輸/*本程序調(diào)用getchar()函數(shù)輸入一個(gè)字符*/#include<stdio.h>main(){charc;

/*定義字符變量*/c=getchar();

/*接收鍵盤(pán)輸入的一個(gè)字符*/putchar(c);/*輸出該字符*/

putchar(’\n’);}6整理ppt/*本程序調(diào)用getchar()函數(shù)輸入一個(gè)字符*/63.2.3不帶緩沖區(qū)的字符輸入函數(shù)getch()和getche()這是某些編譯器,譬如TurboC新增加的兩個(gè)字符輸入函數(shù),這兩個(gè)函數(shù)都是從鍵盤(pán)上讀入一個(gè)字符。兩者的區(qū)別是:getch()函數(shù)將讀入的字符不回顯在屏幕上,而getche()函數(shù)卻將讀入的字符回顯到顯示屏幕上。7整理ppt3.2.3不帶緩沖區(qū)的字符輸入函數(shù)getch()和ge/*本程序調(diào)用getchar()函數(shù)輸入一個(gè)字符*/#include<stdio.h>main(){charc,ch;c=getch();/*從鍵盤(pán)上讀一字符不回顯送給變量c*/

putchar(c);/*輸出該字符*/

ch=getche();/*從鍵盤(pán)讀一字符送給變量ch并回顯*/

putchar(ch);/*輸出該字符*/

}8整理ppt/*本程序調(diào)用getchar()函數(shù)輸入一個(gè)字符*/3.3格式化輸入和輸出函數(shù)3.3.1printf()函數(shù)

用于按指定格式向標(biāo)準(zhǔn)輸出設(shè)備(屏幕)輸出。有兩種形式:

printf("字符串");

例如,下面的語(yǔ)句:

printf("Howareyou!\n");是在屏幕上輸出這樣一行:

Howareyou!這種形式的輸出并沒(méi)有指定輸出格式。9整理ppt3.3格式化輸入和輸出函數(shù)3.3.1printf()另一種形式是:printf("<格式控制串>",<參數(shù)表>)

“格式控制串”是由0個(gè)或多個(gè)格式轉(zhuǎn)換說(shuō)明組成的一個(gè)字符串序列。格式轉(zhuǎn)換說(shuō)明的一般形式為:

%[flag][[width][.prec]][[h][l][L]]輸出格式符格式修飾符(見(jiàn)表3-2)

見(jiàn)表3-1printf(“%d”,a);printf("%d%f",a,x);

printf("a=%d,b=%d,a+b=%d\n",a,b,a+b);

printf(“a=%-d,x=%+8.2f,x+y=%Lf\n",a,x,x+y);

左對(duì)齊

正數(shù)也要加正號(hào)輸出共占8位,其中小數(shù)占兩位輸出為longdouble型10整理ppt另一種形式是:printf("<格式控制串>",<參數(shù)表>3.3.2scanf()函數(shù)

scanf()函數(shù)的一般形式為:

intscanf("<格式控制串>",<地址列表>)

“格式控制串”是由0個(gè)或多個(gè)格式轉(zhuǎn)換說(shuō)明組成的一個(gè)字符串序列。格式轉(zhuǎn)換說(shuō)明的一般形式為:

%[*][width][h/l/L]輸入格式符

格式修飾符(見(jiàn)表3-4)

見(jiàn)表3-3格式轉(zhuǎn)換說(shuō)明的作用是引導(dǎo)對(duì)下一輸入項(xiàng)進(jìn)行轉(zhuǎn)換。

“地址列表”中給出一個(gè)或多個(gè)輸入項(xiàng),輸入項(xiàng)之間用逗號(hào)分隔。從概念上講,輸入項(xiàng)的表示形式是指針,指向存儲(chǔ)輸入數(shù)據(jù)的變量。因此,輸入項(xiàng)必須指明變量的地址。C語(yǔ)言提供了一個(gè)取變量地址的運(yùn)算符“&”,只要將它作用在變量上,就能得到該變量的地址。例如,&a,&b分別表示變量a和變量b的地址。11整理ppt3.3.2scanf()函數(shù)scanf()函例如,若要為int變量a和b從鍵盤(pán)輸入數(shù)據(jù),如果寫(xiě)作:

scanf("%d%d",a,b);是不正確的。可用如下語(yǔ)句實(shí)現(xiàn):

scanf("%d%d",&a,&b);如果將上述語(yǔ)句應(yīng)改為:

scanf("%d,%d",&a,&b);即在兩個(gè)格式轉(zhuǎn)換說(shuō)明之間插入一個(gè)逗號(hào),輸入數(shù)據(jù)時(shí)也必須輸入一個(gè)逗號(hào),如:

123,4567↙

要注意的是,不要輕易將“c”格式與其它格式混在一起用,以免出錯(cuò)。例如,設(shè)a為int型變量,ch是char型變量,對(duì)于語(yǔ)句:

scanf("%d%c",&a,&ch);若輸入為

29□A/*□表示空格符*/其結(jié)果是將數(shù)值29送a,而將一個(gè)空格字符送ch。

12整理ppt例如,若要為int變量a和b從鍵盤(pán)輸入數(shù)據(jù),如果寫(xiě)作3.4關(guān)于格式化輸入和輸出函數(shù)的進(jìn)一步討論3.4.1printf()和scanf()函數(shù)的返回值問(wèn)題若成功,printf()函數(shù)返回輸出的字符個(gè)數(shù),出錯(cuò)時(shí)返回負(fù)數(shù)。

/*本程序測(cè)試printf()函數(shù)的返回值*/#include<stdio.h>main(){intcount;/*定義count,用來(lái)接收返回值*/floatr1=12345.12345678,r2=123.123456789;count=printf("r1=%f\nr2=%f\n",r1,r2);printf("count=%d\n",count);/*輸出printf()函數(shù)的返回值*/}

程序輸出:r1=12345.123047r2=123.123459count=34

13整理ppt3.4關(guān)于格式化輸入和輸出函數(shù)的進(jìn)一步討論3.4scanf()函數(shù)也具有返回值,所不同的是,scanf()函數(shù)執(zhí)行成功時(shí)的返回值是成功讀取的變量數(shù);如果第一個(gè)輸入項(xiàng)讀入就出錯(cuò),則返回0。

/*本程序測(cè)試scanf()函數(shù)的返回值*/#include<stdio.h>intmain(){intcount,a,b,c;count=scanf(“%d,%d,%d”,&a,&b,&c);printf("a=%d,b=%d,c=%d\tcount=%d\n",a,b,c,count);}

執(zhí)行上述程序,如果輸入為:

123,1234,12345↙則輸出結(jié)果為:

a=123,b=1234,c=12345count=314整理pptscanf()函數(shù)也具有返回值,所不同的是,scan3.4.2printf()函數(shù)的p格式符的應(yīng)用在printf()函數(shù)中,p格式符用來(lái)輸出指針的值,即指針?biāo)笇?duì)象的首地址。利用p格式符的這一特性,我們可以了解變量的空間分配情況。下面來(lái)看一個(gè)例子。/*本程序測(cè)試變量的空間分配情況*/#include<stdio.h>intmain(){inti,j,k;printf("&i=%p,&j=%p,&k=%p\n",&i,&j,&k);}

執(zhí)行后的輸出為(不同的系統(tǒng)環(huán)境可能輸出值不同,下面是Turbo2.0的一種輸出):

&i=650B:0FD6,&j=650B:0FD8,&k=650B:0FDA15整理ppt3.4.2printf()函數(shù)的p格式符的應(yīng)用3.4.3scanf()函數(shù)的“%[]”格式應(yīng)用問(wèn)題/*用“%[]”格式接收指定范圍的字符*/#include<stdio.h>intmain(){int*ptr;/*定義一個(gè)指針*/scanf(“%[abcd]”,ptr);printf(“ptr=%s\n”,ptr);}

設(shè)輸入為:

dabcaaagade↙

程序輸出為:

ptr=dabcaaa16整理ppt3.4.3scanf()函數(shù)的“%[]”格式應(yīng)用問(wèn)題/*用“%[]”格式接收指定范圍的字符*/#include<stdio.h>intmain(){int*ptr;/*定義一個(gè)指針*/scanf(“%[^bcd,]”,ptr);printf(“%s\n”,ptr);}

設(shè)輸入為:

Howareyou,John!↙

程序輸出為:

Howareyou

注:這是由于逗號(hào)作為不可接受字符,而作為字符串的定界符.17整理ppt/*用“%[]”格式接收指定范圍的字符*/注:這是由于/*本程序可接收任意字符串的輸入*/#include<stdio.h>intmain(){int*ptr;/*定義一個(gè)指針*/scanf(“%[^\n]”,ptr);printf(“ptr=%s\n”,ptr);}

設(shè)輸入為:

Howareyou!↙

程序輸出為:

Howareyou!18整理ppt/*本程序可接收任意字符串的輸入*/#include<3.4.4scanf()函數(shù)應(yīng)用中兩個(gè)最常見(jiàn)的問(wèn)題1.空白符問(wèn)題/*本程序測(cè)試格式轉(zhuǎn)換說(shuō)明"%d\n"的應(yīng)用情況*/#include<stdio.h>intmain(void){

inta;printf("Pleaseinputthedata:");scanf(“%d\n”,&a);/*注意這里加了一個(gè)換行符\n*/printf(“%d\n",a);}

問(wèn)題:

被要求輸入兩個(gè)數(shù)才能正常結(jié)束

原因:程序要求輸入空白符,而空白符是數(shù)據(jù)的定界符19整理ppt3.4.4scanf()函數(shù)應(yīng)用中兩個(gè)最常見(jiàn)的問(wèn)題2.標(biāo)準(zhǔn)輸入流中殘留字符問(wèn)題/*本程序測(cè)試標(biāo)準(zhǔn)輸入流中殘留字符的情況*/#include<stdio.h>intmain(void){

inta;

charc;

scanf("%d",&a);/*接收一個(gè)整數(shù)*/

scanf("%c",&c);/*接收一個(gè)字符*/

printf("a=%d,c=%d\n",a,c);}注:在這里輸入一個(gè)整數(shù)并按回車(chē)鍵后,程序就輸出了結(jié)果!20整理ppt2.標(biāo)準(zhǔn)輸入流中殘留字符問(wèn)題/*本程序測(cè)試標(biāo)準(zhǔn)輸入流中殘1234\na1234A注:在這里輸入一個(gè)整數(shù)1234并按回車(chē)鍵后,就相當(dāng)于1234\n,這個(gè)\n就輸入給字符變量c!21整理ppt1234\na1234A注:在這里輸入一個(gè)整數(shù)1234并按回本章全部練習(xí)都要做.做在練習(xí)本上.22整理ppt本章全部練習(xí)都要做.做在練習(xí)本上.22整理ppt第3章標(biāo)準(zhǔn)輸入與輸出3.1概述3.2字符輸入輸出函數(shù)3.3格式化輸入和輸出函數(shù)3.4輸入和輸出函數(shù)的討論23整理ppt第3章標(biāo)準(zhǔn)輸入與輸出3.1概述3.2字符輸入輸出通過(guò)終端輸入(如鍵盤(pán)、鼠標(biāo)等),也稱(chēng)為標(biāo)準(zhǔn)輸入(standardinput),直接向終端輸出(如顯示器、打印機(jī)等),也稱(chēng)為標(biāo)準(zhǔn)輸出(standardoutput)。3.1概述C語(yǔ)言本身沒(méi)有提供輸入輸出語(yǔ)句,C語(yǔ)言中的所有I/O操作都是通過(guò)函數(shù)調(diào)用來(lái)實(shí)現(xiàn),而這些并非C語(yǔ)言一部分的輸入輸出函數(shù)均以目標(biāo)級(jí)程序的方式提供,并存放在一個(gè)C標(biāo)準(zhǔn)函數(shù)庫(kù)中。每一個(gè)標(biāo)準(zhǔn)庫(kù)都有一個(gè)相應(yīng)的頭文件,該頭文件包含了該庫(kù)中所有函數(shù)的函數(shù)原型及其相關(guān)信息。在調(diào)用這些庫(kù)函數(shù)時(shí),要用預(yù)處理命令“#include”將有關(guān)的“頭文件”包括到用戶(hù)源程序中。標(biāo)準(zhǔn)輸入輸出庫(kù)函數(shù)對(duì)應(yīng)的頭文件是“stdio.h”。stdio是standardinput&output的縮寫(xiě)。因此,讀者在調(diào)用標(biāo)準(zhǔn)輸入輸出庫(kù)函數(shù)時(shí),你的源程序開(kāi)頭應(yīng)該有如下編譯預(yù)處理命令:

#include<stdio.h>

#include"stdio.h"24整理ppt通過(guò)終端輸入(如鍵盤(pán)、鼠標(biāo)等),也稱(chēng)為標(biāo)準(zhǔn)輸入(st3.2字符輸入輸出函數(shù)3.2.1字符輸出函數(shù)putchar()putchar()函數(shù)是向屏幕一個(gè)字符,其調(diào)用格式為:

putchar(ch);

其中ch為一個(gè)字符變量、字符常量或整型常量。/*本程序測(cè)試多種類(lèi)型數(shù)據(jù)作putchar()函數(shù)參數(shù)的輸出情況*/#include<stdio.h>main(){charc=’A’;/*定義字符變量并初始化*/

putchar(c);

/*輸出變量C的值即字符A*/

putchar(’A’);/*輸出字符A*/putchar(’\x41’);/*輸出字符A,它以轉(zhuǎn)義字符表示,十六進(jìn)制*/

putchar(0x41);/*直接用ASCII碼值輸出字符A*/

putchar(’\101’);/*輸出字符A,它以轉(zhuǎn)義字符表示,八進(jìn)制*/}25整理ppt3.2字符輸入輸出函數(shù)3.2.1字符輸出函數(shù)putch3.2.2帶緩沖區(qū)的字符輸入函數(shù)getchar()getchar()函數(shù)的功能是從標(biāo)準(zhǔn)輸入文件(通常是鍵盤(pán),亦指磁盤(pán)文件)讀取一字節(jié)代碼(即一個(gè)字符),并回顯。所謂回顯,是指輸入一個(gè)字符的同時(shí)又在屏幕上顯示出該字符。這是標(biāo)準(zhǔn)C提供的字符輸入函數(shù),因此也是最常用的字符輸入(尤其是鍵盤(pán)輸入)函數(shù)。鍵盤(pán)緩沖區(qū)(實(shí)際上應(yīng)該稱(chēng)作輸入流即stdin流)。所謂鍵盤(pán)緩沖區(qū),是指在內(nèi)存開(kāi)辟的一片臨時(shí)單元,用來(lái)暫時(shí)存放從鍵盤(pán)輸入的字符。getchar()函數(shù)是帶鍵盤(pán)緩沖區(qū)的輸入函數(shù),是指當(dāng)從鍵盤(pán)輸入字符時(shí),這些字符先存放在鍵盤(pán)緩沖區(qū),如果不敲回車(chē)鍵,getchar()函數(shù)并沒(méi)有真正被執(zhí)行(即所謂被激活);僅當(dāng)回車(chē)鍵也被送入鍵盤(pán)緩沖區(qū)后,getchar()函數(shù)才從鍵盤(pán)緩沖區(qū)中讀取一個(gè)字符。26整理ppt3.2.2帶緩沖區(qū)的字符輸入函數(shù)getchar()強(qiáng)調(diào)以下三點(diǎn):

(1)調(diào)用getchar()函數(shù)輸入字符時(shí),必須用另一個(gè)變量(字符變量或整型變量)接收輸入的字符。例如:

ch=getchar();

(2)調(diào)用getchar()函數(shù)輸入字符時(shí),僅當(dāng)敲入回車(chē)鍵后,函數(shù)才被激活。(3)調(diào)用該函數(shù)時(shí),輸入的每一個(gè)字符,包括空白符(即空格、制表符和回車(chē)符),都被送存到鍵盤(pán)緩沖區(qū)。27整理ppt強(qiáng)調(diào)以下三點(diǎn):(1)調(diào)用getchar()函數(shù)輸/*本程序調(diào)用getchar()函數(shù)輸入一個(gè)字符*/#include<stdio.h>main(){charc;

/*定義字符變量*/c=getchar();

/*接收鍵盤(pán)輸入的一個(gè)字符*/putchar(c);/*輸出該字符*/

putchar(’\n’);}28整理ppt/*本程序調(diào)用getchar()函數(shù)輸入一個(gè)字符*/63.2.3不帶緩沖區(qū)的字符輸入函數(shù)getch()和getche()這是某些編譯器,譬如TurboC新增加的兩個(gè)字符輸入函數(shù),這兩個(gè)函數(shù)都是從鍵盤(pán)上讀入一個(gè)字符。兩者的區(qū)別是:getch()函數(shù)將讀入的字符不回顯在屏幕上,而getche()函數(shù)卻將讀入的字符回顯到顯示屏幕上。29整理ppt3.2.3不帶緩沖區(qū)的字符輸入函數(shù)getch()和ge/*本程序調(diào)用getchar()函數(shù)輸入一個(gè)字符*/#include<stdio.h>main(){charc,ch;c=getch();/*從鍵盤(pán)上讀一字符不回顯送給變量c*/

putchar(c);/*輸出該字符*/

ch=getche();/*從鍵盤(pán)讀一字符送給變量ch并回顯*/

putchar(ch);/*輸出該字符*/

}30整理ppt/*本程序調(diào)用getchar()函數(shù)輸入一個(gè)字符*/3.3格式化輸入和輸出函數(shù)3.3.1printf()函數(shù)

用于按指定格式向標(biāo)準(zhǔn)輸出設(shè)備(屏幕)輸出。有兩種形式:

printf("字符串");

例如,下面的語(yǔ)句:

printf("Howareyou!\n");是在屏幕上輸出這樣一行:

Howareyou!這種形式的輸出并沒(méi)有指定輸出格式。31整理ppt3.3格式化輸入和輸出函數(shù)3.3.1printf()另一種形式是:printf("<格式控制串>",<參數(shù)表>)

“格式控制串”是由0個(gè)或多個(gè)格式轉(zhuǎn)換說(shuō)明組成的一個(gè)字符串序列。格式轉(zhuǎn)換說(shuō)明的一般形式為:

%[flag][[width][.prec]][[h][l][L]]輸出格式符格式修飾符(見(jiàn)表3-2)

見(jiàn)表3-1printf(“%d”,a);printf("%d%f",a,x);

printf("a=%d,b=%d,a+b=%d\n",a,b,a+b);

printf(“a=%-d,x=%+8.2f,x+y=%Lf\n",a,x,x+y);

左對(duì)齊

正數(shù)也要加正號(hào)輸出共占8位,其中小數(shù)占兩位輸出為longdouble型32整理ppt另一種形式是:printf("<格式控制串>",<參數(shù)表>3.3.2scanf()函數(shù)

scanf()函數(shù)的一般形式為:

intscanf("<格式控制串>",<地址列表>)

“格式控制串”是由0個(gè)或多個(gè)格式轉(zhuǎn)換說(shuō)明組成的一個(gè)字符串序列。格式轉(zhuǎn)換說(shuō)明的一般形式為:

%[*][width][h/l/L]輸入格式符

格式修飾符(見(jiàn)表3-4)

見(jiàn)表3-3格式轉(zhuǎn)換說(shuō)明的作用是引導(dǎo)對(duì)下一輸入項(xiàng)進(jìn)行轉(zhuǎn)換。

“地址列表”中給出一個(gè)或多個(gè)輸入項(xiàng),輸入項(xiàng)之間用逗號(hào)分隔。從概念上講,輸入項(xiàng)的表示形式是指針,指向存儲(chǔ)輸入數(shù)據(jù)的變量。因此,輸入項(xiàng)必須指明變量的地址。C語(yǔ)言提供了一個(gè)取變量地址的運(yùn)算符“&”,只要將它作用在變量上,就能得到該變量的地址。例如,&a,&b分別表示變量a和變量b的地址。33整理ppt3.3.2scanf()函數(shù)scanf()函例如,若要為int變量a和b從鍵盤(pán)輸入數(shù)據(jù),如果寫(xiě)作:

scanf("%d%d",a,b);是不正確的。可用如下語(yǔ)句實(shí)現(xiàn):

scanf("%d%d",&a,&b);如果將上述語(yǔ)句應(yīng)改為:

scanf("%d,%d",&a,&b);即在兩個(gè)格式轉(zhuǎn)換說(shuō)明之間插入一個(gè)逗號(hào),輸入數(shù)據(jù)時(shí)也必須輸入一個(gè)逗號(hào),如:

123,4567↙

要注意的是,不要輕易將“c”格式與其它格式混在一起用,以免出錯(cuò)。例如,設(shè)a為int型變量,ch是char型變量,對(duì)于語(yǔ)句:

scanf("%d%c",&a,&ch);若輸入為

29□A/*□表示空格符*/其結(jié)果是將數(shù)值29送a,而將一個(gè)空格字符送ch。

34整理ppt例如,若要為int變量a和b從鍵盤(pán)輸入數(shù)據(jù),如果寫(xiě)作3.4關(guān)于格式化輸入和輸出函數(shù)的進(jìn)一步討論3.4.1printf()和scanf()函數(shù)的返回值問(wèn)題若成功,printf()函數(shù)返回輸出的字符個(gè)數(shù),出錯(cuò)時(shí)返回負(fù)數(shù)。

/*本程序測(cè)試printf()函數(shù)的返回值*/#include<stdio.h>main(){intcount;/*定義count,用來(lái)接收返回值*/floatr1=12345.12345678,r2=123.123456789;count=printf("r1=%f\nr2=%f\n",r1,r2);printf("count=%d\n",count);/*輸出printf()函數(shù)的返回值*/}

程序輸出:r1=12345.123047r2=123.123459count=34

35整理ppt3.4關(guān)于格式化輸入和輸出函數(shù)的進(jìn)一步討論3.4scanf()函數(shù)也具有返回值,所不同的是,scanf()函數(shù)執(zhí)行成功時(shí)的返回值是成功讀取的變量數(shù);如果第一個(gè)輸入項(xiàng)讀入就出錯(cuò),則返回0。

/*本程序測(cè)試scanf()函數(shù)的返回值*/#include<stdio.h>intmain(){intcount,a,b,c;count=scanf(“%d,%d,%d”,&a,&b,&c);printf("a=%d,b=%d,c=%d\tcount=%d\n",a,b,c,count);}

執(zhí)行上述程序,如果輸入為:

123,1234,12345↙則輸出結(jié)果為:

a=123,b=1234,c=12345count=336整理pptscanf()函數(shù)也具有返回值,所不同的是,scan3.4.2printf()函數(shù)的p格式符的應(yīng)用在printf()函數(shù)中,p格式符用來(lái)輸出指針的值,即指針?biāo)笇?duì)象的首地址。利用p格式符的這一特性,我們可以了解變量的空間分配情況。下面來(lái)看一個(gè)例子。/*本程序測(cè)試變量的空間分配情況*/#include<stdio.h>intmain(){inti,j,k;printf("&i=%p,&j=%p,&k=%p\n",&i,&j,&k);}

執(zhí)行后的輸出為(不同的系統(tǒng)環(huán)境可能輸出值不同,下面是Turbo2.0的一種輸出):

&i=650B:0FD6,&j=650B:0FD8,&k=650B:0FDA37整理ppt3.4.2printf()函數(shù)的p格式符的應(yīng)用3.4.3scanf()函數(shù)的“%[]”格式應(yīng)用問(wèn)題/*用“%[]”格式接收指定范圍的字符*/#include<stdio.h>intmain(){int*ptr;/*定義一個(gè)指針*/scanf(“%[abcd]”,ptr);printf(“ptr=%s\n”,ptr);}

設(shè)輸入為:

dabcaaagade↙

程序輸出為:

ptr=dabcaaa38整理ppt3.4.3

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論