




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第3章標準輸入與輸出3.1概述3.2字符輸入輸出函數3.3格式化輸入和輸出函數3.4輸入和輸出函數的討論1整理ppt第3章標準輸入與輸出3.1概述3.2字符輸入輸出通過終端輸入(如鍵盤、鼠標等),也稱為標準輸入(standardinput),直接向終端輸出(如顯示器、打印機等),也稱為標準輸出(standardoutput)。3.1概述C語言本身沒有提供輸入輸出語句,C語言中的所有I/O操作都是通過函數調用來實現,而這些并非C語言一部分的輸入輸出函數均以目標級程序的方式提供,并存放在一個C標準函數庫中。每一個標準庫都有一個相應的頭文件,該頭文件包含了該庫中所有函數的函數原型及其相關信息。在調用這些庫函數時,要用預處理命令“#include”將有關的“頭文件”包括到用戶源程序中。標準輸入輸出庫函數對應的頭文件是“stdio.h”。stdio是standardinput&output的縮寫。因此,讀者在調用標準輸入輸出庫函數時,你的源程序開頭應該有如下編譯預處理命令:
#include<stdio.h>
或
#include"stdio.h"2整理ppt通過終端輸入(如鍵盤、鼠標等),也稱為標準輸入(st3.2字符輸入輸出函數3.2.1字符輸出函數putchar()putchar()函數是向屏幕一個字符,其調用格式為:
putchar(ch);
其中ch為一個字符變量、字符常量或整型常量。/*本程序測試多種類型數據作putchar()函數參數的輸出情況*/#include<stdio.h>main(){charc=’A’;/*定義字符變量并初始化*/
putchar(c);
/*輸出變量C的值即字符A*/
putchar(’A’);/*輸出字符A*/putchar(’\x41’);/*輸出字符A,它以轉義字符表示,十六進制*/
putchar(0x41);/*直接用ASCII碼值輸出字符A*/
putchar(’\101’);/*輸出字符A,它以轉義字符表示,八進制*/}3整理ppt3.2字符輸入輸出函數3.2.1字符輸出函數putch3.2.2帶緩沖區的字符輸入函數getchar()getchar()函數的功能是從標準輸入文件(通常是鍵盤,亦指磁盤文件)讀取一字節代碼(即一個字符),并回顯。所謂回顯,是指輸入一個字符的同時又在屏幕上顯示出該字符。這是標準C提供的字符輸入函數,因此也是最常用的字符輸入(尤其是鍵盤輸入)函數。鍵盤緩沖區(實際上應該稱作輸入流即stdin流)。所謂鍵盤緩沖區,是指在內存開辟的一片臨時單元,用來暫時存放從鍵盤輸入的字符。getchar()函數是帶鍵盤緩沖區的輸入函數,是指當從鍵盤輸入字符時,這些字符先存放在鍵盤緩沖區,如果不敲回車鍵,getchar()函數并沒有真正被執行(即所謂被激活);僅當回車鍵也被送入鍵盤緩沖區后,getchar()函數才從鍵盤緩沖區中讀取一個字符。4整理ppt3.2.2帶緩沖區的字符輸入函數getchar()強調以下三點:
(1)調用getchar()函數輸入字符時,必須用另一個變量(字符變量或整型變量)接收輸入的字符。例如:
ch=getchar();
(2)調用getchar()函數輸入字符時,僅當敲入回車鍵后,函數才被激活。(3)調用該函數時,輸入的每一個字符,包括空白符(即空格、制表符和回車符),都被送存到鍵盤緩沖區。5整理ppt強調以下三點:(1)調用getchar()函數輸/*本程序調用getchar()函數輸入一個字符*/#include<stdio.h>main(){charc;
/*定義字符變量*/c=getchar();
/*接收鍵盤輸入的一個字符*/putchar(c);/*輸出該字符*/
putchar(’\n’);}6整理ppt/*本程序調用getchar()函數輸入一個字符*/63.2.3不帶緩沖區的字符輸入函數getch()和getche()這是某些編譯器,譬如TurboC新增加的兩個字符輸入函數,這兩個函數都是從鍵盤上讀入一個字符。兩者的區別是:getch()函數將讀入的字符不回顯在屏幕上,而getche()函數卻將讀入的字符回顯到顯示屏幕上。7整理ppt3.2.3不帶緩沖區的字符輸入函數getch()和ge/*本程序調用getchar()函數輸入一個字符*/#include<stdio.h>main(){charc,ch;c=getch();/*從鍵盤上讀一字符不回顯送給變量c*/
putchar(c);/*輸出該字符*/
ch=getche();/*從鍵盤讀一字符送給變量ch并回顯*/
putchar(ch);/*輸出該字符*/
}8整理ppt/*本程序調用getchar()函數輸入一個字符*/3.3格式化輸入和輸出函數3.3.1printf()函數
用于按指定格式向標準輸出設備(屏幕)輸出。有兩種形式:
printf("字符串");
例如,下面的語句:
printf("Howareyou!\n");是在屏幕上輸出這樣一行:
Howareyou!這種形式的輸出并沒有指定輸出格式。9整理ppt3.3格式化輸入和輸出函數3.3.1printf()另一種形式是:printf("<格式控制串>",<參數表>)
“格式控制串”是由0個或多個格式轉換說明組成的一個字符串序列。格式轉換說明的一般形式為:
%[flag][[width][.prec]][[h][l][L]]輸出格式符格式修飾符(見表3-2)
見表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);
左對齊
正數也要加正號輸出共占8位,其中小數占兩位輸出為longdouble型10整理ppt另一種形式是:printf("<格式控制串>",<參數表>3.3.2scanf()函數
scanf()函數的一般形式為:
intscanf("<格式控制串>",<地址列表>)
“格式控制串”是由0個或多個格式轉換說明組成的一個字符串序列。格式轉換說明的一般形式為:
%[*][width][h/l/L]輸入格式符
格式修飾符(見表3-4)
見表3-3格式轉換說明的作用是引導對下一輸入項進行轉換。
“地址列表”中給出一個或多個輸入項,輸入項之間用逗號分隔。從概念上講,輸入項的表示形式是指針,指向存儲輸入數據的變量。因此,輸入項必須指明變量的地址。C語言提供了一個取變量地址的運算符“&”,只要將它作用在變量上,就能得到該變量的地址。例如,&a,&b分別表示變量a和變量b的地址。11整理ppt3.3.2scanf()函數scanf()函例如,若要為int變量a和b從鍵盤輸入數據,如果寫作:
scanf("%d%d",a,b);是不正確的。可用如下語句實現:
scanf("%d%d",&a,&b);如果將上述語句應改為:
scanf("%d,%d",&a,&b);即在兩個格式轉換說明之間插入一個逗號,輸入數據時也必須輸入一個逗號,如:
123,4567↙
要注意的是,不要輕易將“c”格式與其它格式混在一起用,以免出錯。例如,設a為int型變量,ch是char型變量,對于語句:
scanf("%d%c",&a,&ch);若輸入為
29□A/*□表示空格符*/其結果是將數值29送a,而將一個空格字符送ch。
12整理ppt例如,若要為int變量a和b從鍵盤輸入數據,如果寫作3.4關于格式化輸入和輸出函數的進一步討論3.4.1printf()和scanf()函數的返回值問題若成功,printf()函數返回輸出的字符個數,出錯時返回負數。
/*本程序測試printf()函數的返回值*/#include<stdio.h>main(){intcount;/*定義count,用來接收返回值*/floatr1=12345.12345678,r2=123.123456789;count=printf("r1=%f\nr2=%f\n",r1,r2);printf("count=%d\n",count);/*輸出printf()函數的返回值*/}
程序輸出:r1=12345.123047r2=123.123459count=34
13整理ppt3.4關于格式化輸入和輸出函數的進一步討論3.4scanf()函數也具有返回值,所不同的是,scanf()函數執行成功時的返回值是成功讀取的變量數;如果第一個輸入項讀入就出錯,則返回0。
/*本程序測試scanf()函數的返回值*/#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);}
執行上述程序,如果輸入為:
123,1234,12345↙則輸出結果為:
a=123,b=1234,c=12345count=314整理pptscanf()函數也具有返回值,所不同的是,scan3.4.2printf()函數的p格式符的應用在printf()函數中,p格式符用來輸出指針的值,即指針所指對象的首地址。利用p格式符的這一特性,我們可以了解變量的空間分配情況。下面來看一個例子。/*本程序測試變量的空間分配情況*/#include<stdio.h>intmain(){inti,j,k;printf("&i=%p,&j=%p,&k=%p\n",&i,&j,&k);}
執行后的輸出為(不同的系統環境可能輸出值不同,下面是Turbo2.0的一種輸出):
&i=650B:0FD6,&j=650B:0FD8,&k=650B:0FDA15整理ppt3.4.2printf()函數的p格式符的應用3.4.3scanf()函數的“%[]”格式應用問題/*用“%[]”格式接收指定范圍的字符*/#include<stdio.h>intmain(){int*ptr;/*定義一個指針*/scanf(“%[abcd]”,ptr);printf(“ptr=%s\n”,ptr);}
設輸入為:
dabcaaagade↙
程序輸出為:
ptr=dabcaaa16整理ppt3.4.3scanf()函數的“%[]”格式應用問題/*用“%[]”格式接收指定范圍的字符*/#include<stdio.h>intmain(){int*ptr;/*定義一個指針*/scanf(“%[^bcd,]”,ptr);printf(“%s\n”,ptr);}
設輸入為:
Howareyou,John!↙
程序輸出為:
Howareyou
注:這是由于逗號作為不可接受字符,而作為字符串的定界符.17整理ppt/*用“%[]”格式接收指定范圍的字符*/注:這是由于/*本程序可接收任意字符串的輸入*/#include<stdio.h>intmain(){int*ptr;/*定義一個指針*/scanf(“%[^\n]”,ptr);printf(“ptr=%s\n”,ptr);}
設輸入為:
Howareyou!↙
程序輸出為:
Howareyou!18整理ppt/*本程序可接收任意字符串的輸入*/#include<3.4.4scanf()函數應用中兩個最常見的問題1.空白符問題/*本程序測試格式轉換說明"%d\n"的應用情況*/#include<stdio.h>intmain(void){
inta;printf("Pleaseinputthedata:");scanf(“%d\n”,&a);/*注意這里加了一個換行符\n*/printf(“%d\n",a);}
問題:
被要求輸入兩個數才能正常結束
原因:程序要求輸入空白符,而空白符是數據的定界符19整理ppt3.4.4scanf()函數應用中兩個最常見的問題2.標準輸入流中殘留字符問題/*本程序測試標準輸入流中殘留字符的情況*/#include<stdio.h>intmain(void){
inta;
charc;
scanf("%d",&a);/*接收一個整數*/
scanf("%c",&c);/*接收一個字符*/
printf("a=%d,c=%d\n",a,c);}注:在這里輸入一個整數并按回車鍵后,程序就輸出了結果!20整理ppt2.標準輸入流中殘留字符問題/*本程序測試標準輸入流中殘1234\na1234A注:在這里輸入一個整數1234并按回車鍵后,就相當于1234\n,這個\n就輸入給字符變量c!21整理ppt1234\na1234A注:在這里輸入一個整數1234并按回本章全部練習都要做.做在練習本上.22整理ppt本章全部練習都要做.做在練習本上.22整理ppt第3章標準輸入與輸出3.1概述3.2字符輸入輸出函數3.3格式化輸入和輸出函數3.4輸入和輸出函數的討論23整理ppt第3章標準輸入與輸出3.1概述3.2字符輸入輸出通過終端輸入(如鍵盤、鼠標等),也稱為標準輸入(standardinput),直接向終端輸出(如顯示器、打印機等),也稱為標準輸出(standardoutput)。3.1概述C語言本身沒有提供輸入輸出語句,C語言中的所有I/O操作都是通過函數調用來實現,而這些并非C語言一部分的輸入輸出函數均以目標級程序的方式提供,并存放在一個C標準函數庫中。每一個標準庫都有一個相應的頭文件,該頭文件包含了該庫中所有函數的函數原型及其相關信息。在調用這些庫函數時,要用預處理命令“#include”將有關的“頭文件”包括到用戶源程序中。標準輸入輸出庫函數對應的頭文件是“stdio.h”。stdio是standardinput&output的縮寫。因此,讀者在調用標準輸入輸出庫函數時,你的源程序開頭應該有如下編譯預處理命令:
#include<stdio.h>
或
#include"stdio.h"24整理ppt通過終端輸入(如鍵盤、鼠標等),也稱為標準輸入(st3.2字符輸入輸出函數3.2.1字符輸出函數putchar()putchar()函數是向屏幕一個字符,其調用格式為:
putchar(ch);
其中ch為一個字符變量、字符常量或整型常量。/*本程序測試多種類型數據作putchar()函數參數的輸出情況*/#include<stdio.h>main(){charc=’A’;/*定義字符變量并初始化*/
putchar(c);
/*輸出變量C的值即字符A*/
putchar(’A’);/*輸出字符A*/putchar(’\x41’);/*輸出字符A,它以轉義字符表示,十六進制*/
putchar(0x41);/*直接用ASCII碼值輸出字符A*/
putchar(’\101’);/*輸出字符A,它以轉義字符表示,八進制*/}25整理ppt3.2字符輸入輸出函數3.2.1字符輸出函數putch3.2.2帶緩沖區的字符輸入函數getchar()getchar()函數的功能是從標準輸入文件(通常是鍵盤,亦指磁盤文件)讀取一字節代碼(即一個字符),并回顯。所謂回顯,是指輸入一個字符的同時又在屏幕上顯示出該字符。這是標準C提供的字符輸入函數,因此也是最常用的字符輸入(尤其是鍵盤輸入)函數。鍵盤緩沖區(實際上應該稱作輸入流即stdin流)。所謂鍵盤緩沖區,是指在內存開辟的一片臨時單元,用來暫時存放從鍵盤輸入的字符。getchar()函數是帶鍵盤緩沖區的輸入函數,是指當從鍵盤輸入字符時,這些字符先存放在鍵盤緩沖區,如果不敲回車鍵,getchar()函數并沒有真正被執行(即所謂被激活);僅當回車鍵也被送入鍵盤緩沖區后,getchar()函數才從鍵盤緩沖區中讀取一個字符。26整理ppt3.2.2帶緩沖區的字符輸入函數getchar()強調以下三點:
(1)調用getchar()函數輸入字符時,必須用另一個變量(字符變量或整型變量)接收輸入的字符。例如:
ch=getchar();
(2)調用getchar()函數輸入字符時,僅當敲入回車鍵后,函數才被激活。(3)調用該函數時,輸入的每一個字符,包括空白符(即空格、制表符和回車符),都被送存到鍵盤緩沖區。27整理ppt強調以下三點:(1)調用getchar()函數輸/*本程序調用getchar()函數輸入一個字符*/#include<stdio.h>main(){charc;
/*定義字符變量*/c=getchar();
/*接收鍵盤輸入的一個字符*/putchar(c);/*輸出該字符*/
putchar(’\n’);}28整理ppt/*本程序調用getchar()函數輸入一個字符*/63.2.3不帶緩沖區的字符輸入函數getch()和getche()這是某些編譯器,譬如TurboC新增加的兩個字符輸入函數,這兩個函數都是從鍵盤上讀入一個字符。兩者的區別是:getch()函數將讀入的字符不回顯在屏幕上,而getche()函數卻將讀入的字符回顯到顯示屏幕上。29整理ppt3.2.3不帶緩沖區的字符輸入函數getch()和ge/*本程序調用getchar()函數輸入一個字符*/#include<stdio.h>main(){charc,ch;c=getch();/*從鍵盤上讀一字符不回顯送給變量c*/
putchar(c);/*輸出該字符*/
ch=getche();/*從鍵盤讀一字符送給變量ch并回顯*/
putchar(ch);/*輸出該字符*/
}30整理ppt/*本程序調用getchar()函數輸入一個字符*/3.3格式化輸入和輸出函數3.3.1printf()函數
用于按指定格式向標準輸出設備(屏幕)輸出。有兩種形式:
printf("字符串");
例如,下面的語句:
printf("Howareyou!\n");是在屏幕上輸出這樣一行:
Howareyou!這種形式的輸出并沒有指定輸出格式。31整理ppt3.3格式化輸入和輸出函數3.3.1printf()另一種形式是:printf("<格式控制串>",<參數表>)
“格式控制串”是由0個或多個格式轉換說明組成的一個字符串序列。格式轉換說明的一般形式為:
%[flag][[width][.prec]][[h][l][L]]輸出格式符格式修飾符(見表3-2)
見表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);
左對齊
正數也要加正號輸出共占8位,其中小數占兩位輸出為longdouble型32整理ppt另一種形式是:printf("<格式控制串>",<參數表>3.3.2scanf()函數
scanf()函數的一般形式為:
intscanf("<格式控制串>",<地址列表>)
“格式控制串”是由0個或多個格式轉換說明組成的一個字符串序列。格式轉換說明的一般形式為:
%[*][width][h/l/L]輸入格式符
格式修飾符(見表3-4)
見表3-3格式轉換說明的作用是引導對下一輸入項進行轉換。
“地址列表”中給出一個或多個輸入項,輸入項之間用逗號分隔。從概念上講,輸入項的表示形式是指針,指向存儲輸入數據的變量。因此,輸入項必須指明變量的地址。C語言提供了一個取變量地址的運算符“&”,只要將它作用在變量上,就能得到該變量的地址。例如,&a,&b分別表示變量a和變量b的地址。33整理ppt3.3.2scanf()函數scanf()函例如,若要為int變量a和b從鍵盤輸入數據,如果寫作:
scanf("%d%d",a,b);是不正確的。可用如下語句實現:
scanf("%d%d",&a,&b);如果將上述語句應改為:
scanf("%d,%d",&a,&b);即在兩個格式轉換說明之間插入一個逗號,輸入數據時也必須輸入一個逗號,如:
123,4567↙
要注意的是,不要輕易將“c”格式與其它格式混在一起用,以免出錯。例如,設a為int型變量,ch是char型變量,對于語句:
scanf("%d%c",&a,&ch);若輸入為
29□A/*□表示空格符*/其結果是將數值29送a,而將一個空格字符送ch。
34整理ppt例如,若要為int變量a和b從鍵盤輸入數據,如果寫作3.4關于格式化輸入和輸出函數的進一步討論3.4.1printf()和scanf()函數的返回值問題若成功,printf()函數返回輸出的字符個數,出錯時返回負數。
/*本程序測試printf()函數的返回值*/#include<stdio.h>main(){intcount;/*定義count,用來接收返回值*/floatr1=12345.12345678,r2=123.123456789;count=printf("r1=%f\nr2=%f\n",r1,r2);printf("count=%d\n",count);/*輸出printf()函數的返回值*/}
程序輸出:r1=12345.123047r2=123.123459count=34
35整理ppt3.4關于格式化輸入和輸出函數的進一步討論3.4scanf()函數也具有返回值,所不同的是,scanf()函數執行成功時的返回值是成功讀取的變量數;如果第一個輸入項讀入就出錯,則返回0。
/*本程序測試scanf()函數的返回值*/#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);}
執行上述程序,如果輸入為:
123,1234,12345↙則輸出結果為:
a=123,b=1234,c=12345count=336整理pptscanf()函數也具有返回值,所不同的是,scan3.4.2printf()函數的p格式符的應用在printf()函數中,p格式符用來輸出指針的值,即指針所指對象的首地址。利用p格式符的這一特性,我們可以了解變量的空間分配情況。下面來看一個例子。/*本程序測試變量的空間分配情況*/#include<stdio.h>intmain(){inti,j,k;printf("&i=%p,&j=%p,&k=%p\n",&i,&j,&k);}
執行后的輸出為(不同的系統環境可能輸出值不同,下面是Turbo2.0的一種輸出):
&i=650B:0FD6,&j=650B:0FD8,&k=650B:0FDA37整理ppt3.4.2printf()函數的p格式符的應用3.4.3scanf()函數的“%[]”格式應用問題/*用“%[]”格式接收指定范圍的字符*/#include<stdio.h>intmain(){int*ptr;/*定義一個指針*/scanf(“%[abcd]”,ptr);printf(“ptr=%s\n”,ptr);}
設輸入為:
dabcaaagade↙
程序輸出為:
ptr=dabcaaa38整理ppt3.4.3
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 自行車服務在歷史文化街區的融合考核試卷
- 花卉種植的園林景觀植物養護考核試卷
- 2025年工業爐窯的新型燃燒裝置項目建議書
- 橡膠板在電梯門擋板中的安全性能考核試卷
- 品牌營銷實際流程策劃
- 環保專業知識課件
- 中醫骨傷科學多媒體課件-中醫骨傷科學
- 2025年石英玻璃纖維套管項目建議書
- 福建高二考試試題及答案
- 嘉定國資委考試試題及答案
- 2025年全國保密教育線上培訓考試試題庫及參考答案(完整版)及答案詳解1套
- 西師大版小學五年級數學(下)期末測試題(帶答案)
- 2025投資咨詢合同范本
- Unit8SectionA1a2d課件人教版八年級英語下冊
- 2025年北京市海淀區高三語文二模議論文《從知到智》范文
- 飯店員工勞務合同9篇
- 壓敏電阻材料在織物上的印刷技術應用
- 兒童發展問題的咨詢與輔導-案例1-5-國開-參考資料
- 安全生產法律法規匯編(2025版)
- 彎矩二次分配法excel表-(1)
- 粉煤灰漂珠粉項目可行性研究報告寫作范文
評論
0/150
提交評論