C語(yǔ)言文字藝術(shù)之?dāng)?shù)據(jù)輸入輸出
語(yǔ)句
C語(yǔ)言的語(yǔ)句用來(lái)向計(jì)算機(jī)系統(tǒng)發(fā)出操作指令。一條語(yǔ)句編寫完成經(jīng)過(guò)編譯后產(chǎn)生若干條機(jī)器指令。實(shí)際程序中包含若干條語(yǔ)句,因此語(yǔ)句的作用就是完成一定的操作任務(wù)。
字符數(shù)據(jù)輸入輸出
字符數(shù)據(jù)輸出
字符數(shù)據(jù)輸出使用的是putchar函數(shù),作用是向顯示設(shè)備輸出一個(gè)字符。該函數(shù)的定義為:
int putchar( int ch );
使用時(shí)要添加頭文件stdio.h,其中的參數(shù)ch是要進(jìn)行輸出的字符,可以是字符型變量或整型變量,也可以使用常量。例如輸出一個(gè)字符A的代碼如下:
putchar('A');
使用putchar函數(shù)也可以輸出轉(zhuǎn)義字符,例如輸出字符A:
putchar('\101');
【實(shí)例5.1】 使用putchar函數(shù)實(shí)現(xiàn)字符數(shù)據(jù)輸出。在程序中使用putchar函數(shù),輸出字符串“Hello”并且在字符串輸出完畢之后進(jìn)行換行。
#include<stdio.h> int main() { char cChar1,cChar2,cChar3,cChar4; /*聲明變量*/ cChar1='H'; /*為變量賦值*/ cChar2='e'; cChar3='l'; cChar4='o'; putchar(cChar1); /*輸出字符變量*/ putchar(cChar2); putchar(cChar3); putchar(cChar3); putchar(cChar4); putchar('\n'); /*輸出轉(zhuǎn)義字符*/ return 0; }
字符數(shù)據(jù)輸入
字符數(shù)據(jù)輸入使用的是getchar函數(shù),此函數(shù)的作用是從終端(輸入設(shè)備)輸入一個(gè)字符。getchar函數(shù)與putchar函數(shù)的區(qū)別在于沒(méi)有參數(shù)。
該函數(shù)的定義為:
int getchar();
使用getchar函數(shù)時(shí)也要添加頭文件stdio.h,函數(shù)的值就是從輸入設(shè)備得到的字符。例如從輸入設(shè)備得到一個(gè)字符賦給字符變量cChar:
cChar=getchar();
【實(shí)例5.2】 使用getchar函數(shù)實(shí)現(xiàn)字符數(shù)據(jù)輸入。在本實(shí)例中,使用getchar函數(shù)獲取在鍵盤上輸入的字符,再利用putchar函數(shù)進(jìn)行輸出。本實(shí)例演示了將getchar作為putchar函數(shù)表達(dá)式的一部分,進(jìn)行輸入和輸出字符的方式。
#include<stdio.h> int main() { char cChar1; /*聲明變量*/ cChar1=getchar(); /*在輸入設(shè)備得到字符*/ putchar(cChar1); /*輸出字符*/ putchar('\n'); /*輸出轉(zhuǎn)義字符換行*/ getchar(); /*得到回車字符*/ putchar(getchar()); /*得到輸入字符,直接輸出*/ putchar('\n'); /*換行*/ return 0; /*程序結(jié)束*/ }
【實(shí)例5.3】 使用getchar函數(shù)取消獲取回車符。
#include<stdio.h> int main() { char cChar1; /*聲明變量*/ cChar1=getchar(); /*在輸入設(shè)備得到字符*/ putchar(cChar1); /*輸出字符*/ putchar('\n'); /*輸出轉(zhuǎn)義字符換行*/ /*將此處getchar函數(shù)刪掉*/ putchar(getchar()); /*得到輸入字符,直接輸出*/ putchar('\n'); /*換行*/ return 0; /*程序結(jié)束*/ }
字符串輸入輸出
字符串輸出函數(shù)
字符串輸出使用的是puts函數(shù),作用是輸出一個(gè)字符串到屏幕上。
該函數(shù)的定義為:
int puts( char *str );
使用該函數(shù)時(shí),先要在其程序中添加stdio.h頭文件。其中,形式參數(shù)str是字符指針類型,可以用來(lái)接收要輸出的字符串。例如使用puts函數(shù)輸出一個(gè)字符串:
puts("I LOVE CHINA!"); /*輸出一個(gè)字符串常量*/
這行語(yǔ)句是輸出一個(gè)字符串,之后會(huì)自動(dòng)進(jìn)行換行操作。這與printf函數(shù)有所不同,在前面的實(shí)例中使用printf函數(shù)進(jìn)行換行時(shí),要在其中添加轉(zhuǎn)義字符'\n'。puts函數(shù)會(huì)在字符串中判斷“\0”結(jié)束符,遇到結(jié)束符時(shí),后面的字符不再輸出并且自動(dòng)換行。例如:
puts("I LOVE\0 CHINA!"); /*輸出一個(gè)字符串常量*/
在上面的語(yǔ)句中加上“\0”字符后,puts函數(shù)輸出的字符串就變成:I LOVE。
【實(shí)例5.4】 使用字符串輸出函數(shù)顯示信息提示。在本實(shí)例中,使用puts函數(shù)對(duì)字符串常量和字符串變量都進(jìn)行操作,在這些操作中觀察使用puts函數(shù)的方式。
#include<stdio.h> int main() { char* Char="ILOVECHINA"; /*定義字符串指針變量*/ puts("ILOVECHINA!"); /*輸出字符串常量*/ puts("I\0LOVE\0CHINA!"); /*輸出字符串常量,其中加入結(jié)束符'\0'*/ puts(Char); /*輸出字符串變量的值*/ Char="ILOVE\0CHINA!"; /*改變字符串變量的值*/ puts(Char); /*輸出字符串變量的值*/ return 0; /*程序結(jié)束*/ }
字符串輸入函數(shù)
字符串輸入函數(shù)使用的是gets函數(shù),作用是將讀取字符串保存在形式參數(shù)str變量中,讀取過(guò)程直到出現(xiàn)新的一行為止。其中新的一行的換行字符將會(huì)轉(zhuǎn)化為字符串中的空終止符“\0”。gets函數(shù)的定義如下:
char *gets( char *str );
在使用gets字符串輸入函數(shù)前,要為程序加入頭文件stdio.h。其中的str字符指針變量為形式參數(shù)。例如定義字符數(shù)組變量cString,然后使用gets函數(shù)獲取輸入字符的方式如下:
gets(cString);
在上面的代碼中,cString變量獲取到了字符串,并將最后的換行符轉(zhuǎn)化成了終止字符。
【實(shí)例5.5】 使用字符串輸入函數(shù)gets獲取輸入信息。
#include<stdio.h> int main() { char cString[30]; /*定義一個(gè)字符數(shù)組變量*/ gets(cString); /*獲取字符串*/ puts(cString); /*輸出字符串*/ return 0; /*程序結(jié)束*/ }
格式輸出函數(shù)
前面章節(jié)的實(shí)例中常常使用格式輸入輸出函數(shù)scanf和printf。其中printf函數(shù)就是用于格式輸出的函數(shù),也稱為格式輸出函數(shù)。
printf函數(shù)的作用是向終端(輸出設(shè)備)輸出若干任意類型的數(shù)據(jù)。printf函數(shù)的一般格式為:
printf(格式控制,輸出列表)
括號(hào)內(nèi)包括兩部分:
格式控制:格式控制是用雙引號(hào)括起來(lái)的字符串,此處也稱為轉(zhuǎn)換控制字符串。其中包括兩種字符,一種是格式字符,另一種是普通字符。
格式字符:格式字符用來(lái)進(jìn)行格式說(shuō)明,作用是將輸出的數(shù)據(jù)轉(zhuǎn)化為指定的格式輸出。格式字符是以 “ % ” 字符開(kāi)頭的。 普通字符是需要原樣輸出的字符,其中包括雙引號(hào)內(nèi)的逗號(hào)、空格和換行符。 輸出列表
輸出列表中列出的是要進(jìn)行輸出的一些數(shù)據(jù),可以是變量或表達(dá)式。
例如,要輸出一個(gè)整型變量時(shí):
int iInt=10;
printf("this is %d",iInt);
執(zhí)行上面的語(yǔ)句顯示出來(lái)的字符是this is 10。在格式控制雙引號(hào)中的字符是this is %d,其中的this is字符串是普通字符,而%d是格式字符,表示輸出的是后面iInt的數(shù)據(jù)。
由于printf是函數(shù),“格式控制”和“輸出列表”這兩個(gè)位置都是函數(shù)的參數(shù),因此printf函數(shù)的一般形式也可以表示為:
printf(參數(shù)1,參數(shù)2,……,參數(shù)n)
函數(shù)中的每一個(gè)參數(shù)按照給定的格式和順行依次輸出。例如,顯示一個(gè)字符型變量和整型變量:
printf("the Int is %d,the Char is %c",iInt,cChar);
下表列出了有關(guān)printf函數(shù)的格式字符。
【實(shí)例5.6】 使用格式輸出函數(shù)printf。在本實(shí)例中,使用printf函數(shù)對(duì)不同類型變量進(jìn)行輸出,對(duì)使用printf函數(shù)所用到的輸出格式進(jìn)行分析理解。
#include<stdio.h> int main() { int iInt=10; /*定義整型變量*/ char cChar='A'; /*定義字符型變量*/ float fFloat=12.34f; /*定義單精度浮點(diǎn)型*/ printf("the int is: %d\n",iInt); /*使用printf函數(shù)輸出整型*/ printf("the char is: %c\n",cChar);/*輸出字符型*/ printf("the float is: %f\n",fFloat);/*輸出浮點(diǎn)型*/ printf("the stirng is: %s\n","I LOVE YOU"); /*輸出字符串*/ return 0; }
【實(shí)例5.7】 在printf函數(shù)中使用附加符號(hào)。(在本實(shí)例中,使用printf函數(shù)的附加格式說(shuō)明字符,對(duì)輸出的數(shù)據(jù)進(jìn)行更為精準(zhǔn)的格式設(shè)計(jì)。
#include<stdio.h> int main() { long iLong=100000; /*定義長(zhǎng)整型變量,為其賦值*/ printf("the Long is %ld\n",iLong);/*輸出長(zhǎng)整型變量*/ printf("the string is: %s\n","LOVE");/*輸出字符串*/ printf("the string is: %10s\n","LOVE");/*使用m控制輸出列*/ printf("the string is: %-10s\n","LOVE");/*使用-表示向左靠攏*/ printf("the string is: %10.3s\n","LOVE");/*使用n表示取字符數(shù)*/ printf("the string is: %-10.3s\n","LOVE"); return 0; }
格式輸入函數(shù)
與格式輸出函數(shù)printf相對(duì)應(yīng)的是格式輸入函數(shù)scanf。該函數(shù)的功能是指定固定的格式,并且按照指定的格式接收用戶在鍵盤上輸入的數(shù)據(jù),最后將數(shù)據(jù)存儲(chǔ)在指定的變量中。
scanf函數(shù)的一般格式為:
scanf(格式控制,地址列表)
通過(guò)scanf函數(shù)的一般格式可以看出,參數(shù)位置中的格式控制與printf函數(shù)相同。例如%d表示十進(jìn)制的整型,%c表示單字符。而在地址列表中,此處應(yīng)該給出用來(lái)接收數(shù)據(jù)變量的地址。例如得到一個(gè)整型數(shù)據(jù)的操作:
scanf("%d",&iInt); /*得到一個(gè)整型數(shù)據(jù)*/
在上面的代碼中,&符號(hào)表示取iInt變量的地址,因此不用關(guān)心變量的地址具體是多少,只要在代碼中在變量的標(biāo)識(shí)符前加&符號(hào),就表示取變量的地址。
【實(shí)例5.8】 使用scanf格式輸入函數(shù)得到用戶輸入的數(shù)據(jù)。在本實(shí)例中,利用scanf函數(shù)得到用戶輸入的兩個(gè)整型數(shù)據(jù),因?yàn)閟canf函數(shù)只能用于輸入操作,所以若在屏幕上顯示信息則使用顯示函數(shù)。
#include<stdio.h> int main() { int iInt1,iInt2; /*定義兩個(gè)整型變量*/ puts("Please enter two numbers:");/*通過(guò)puts函數(shù)輸出提示信息的字符串*/ scanf("%d%d",&iInt1,&iInt2); /*通過(guò)scanf函數(shù)得到輸入的數(shù)據(jù)*/ printf("The first is : %d\n",iInt1);/*顯示第一個(gè)輸入的數(shù)據(jù)*/ printf("The second is : %d\n",iInt2);/*顯示第二個(gè)輸入的數(shù)據(jù)*/ return 0; }
在printf函數(shù)中除了格式字符還有附加格式用于更為具體的說(shuō)明,相應(yīng)地,scanf函數(shù)中也有附加格式用于更為具體的格式說(shuō)明,如下表所示。
表示指定的輸入項(xiàng)在讀入后不賦給相應(yīng)的變量
順序程序設(shè)計(jì)應(yīng)用
【實(shí)例5.10】 計(jì)算圓的面積。在本實(shí)例中,定義單精度浮點(diǎn)型變量,為其賦值為圓周率的值。得到用戶輸入的數(shù)據(jù)并進(jìn)行計(jì)算,最后將計(jì)算的結(jié)果輸出。
#include<stdio.h> int main() { float Pie=3.14f; /*定義圓周率*/ float fArea; /*定義變量,表示圓的面積*/ float fRadius; /*定義變量,表示圓的半徑*/ puts("Enter the radius:"); /*輸出提示信息*/ scanf("%f",&fRadius); /*輸入圓的半徑*/ fArea=fRadius*fRadius*Pie; /*計(jì)算圓的面積*/ printf("The Area is: %.2f\n",fArea); /*輸出計(jì)算的結(jié)果*/ return 0; /*程序結(jié)束*/ }
【實(shí)例5.11】 將大寫字符轉(zhuǎn)化成小寫字符。本實(shí)例要將一個(gè)輸入的大寫字符轉(zhuǎn)化成小寫字符,需要對(duì)其中的ASCII碼的關(guān)系有所了解。將大寫字符轉(zhuǎn)化成小寫字符的方法就是將大寫字符的ASCII碼轉(zhuǎn)化成小寫字符的ASCII碼。
#include<stdio.h> int main() { char cBig; /*定義字符變量,表示大寫字符*/ char cSmall; /*定義字符變量,表示小寫字符*/ puts("Please enter capital character:");/*輸出提示信息*/ cBig=getchar(); /*得到用戶輸入的大寫字符*/ puts("Minuscule character is:"); /*輸出提示信息*/ cSmall=cBig+32; /*將大寫字符轉(zhuǎn)化成小寫字符*/ printf("%c\n",cSmall); /*輸出小寫字符*/ return 0; /*程序結(jié)束*/ }
其中,用于單個(gè)字符的輸入、輸出時(shí),使用的是getchar和putchar函數(shù),而gets和puts函數(shù)用于輸入、輸出字符串,并且puts函數(shù)在遇到終止符時(shí)會(huì)進(jìn)行自動(dòng)換行。為了能輸出其他類型的數(shù)據(jù),可以使用格式輸出函數(shù)printf和格式輸入函數(shù)scanf。在這兩個(gè)格式函數(shù)中,利用格式字符和附加格式字符可以更為具體地進(jìn)行格式說(shuō)明。
到此這篇關(guān)于C語(yǔ)言文字藝術(shù)之?dāng)?shù)據(jù)輸入輸出的文章就介紹到這了,更多相關(guān)C語(yǔ)言數(shù)據(jù)輸入輸出內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++ Cartographer加載配置文件過(guò)程介紹
這篇文章主要介紹了Cartographer加載配置文件過(guò)程,谷歌優(yōu)秀的激光SLAM開(kāi)源框架Cartographer算法簡(jiǎn)單,但是程序部分太多需要學(xué)習(xí)的地方了,不論是整體框架的結(jié)構(gòu),還是數(shù)據(jù)的使用,都是非常優(yōu)美的2023-03-03一篇文章帶你入門C語(yǔ)言數(shù)據(jù)結(jié)構(gòu):緒論
這篇文章主要介紹了C語(yǔ)言的數(shù)據(jù)解構(gòu)基礎(chǔ),希望對(duì)廣大的程序愛(ài)好者有所幫助,同時(shí)祝大家有一個(gè)好成績(jī),需要的朋友可以參考下,希望能給你帶來(lái)幫助2021-08-08VS2010 boost標(biāo)準(zhǔn)庫(kù)開(kāi)發(fā)環(huán)境安裝教程
這篇文章主要為大家詳細(xì)介紹了VS2010 boost標(biāo)準(zhǔn)庫(kù)開(kāi)發(fā)環(huán)境的安裝教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04C/C++語(yǔ)言中結(jié)構(gòu)體的內(nèi)存分配小例子
當(dāng)未用 #pragma 指令指定編譯器的對(duì)齊位數(shù)時(shí),結(jié)構(gòu)體按最長(zhǎng)寬度的數(shù)據(jù)成員的寬度對(duì)齊;當(dāng)使用了 #pragma 指令指定編譯器的對(duì)齊位數(shù)時(shí),結(jié)構(gòu)體按最長(zhǎng)寬度的數(shù)據(jù)成員的寬度和 #pragma 指令指定的位數(shù)中的較小值對(duì)齊2013-10-10VS Code C/C++環(huán)境配置教程(無(wú)法打開(kāi)源文件“xxxxxx.h”或者檢測(cè)到 #include 錯(cuò)誤,請(qǐng)更新in
這篇文章主要介紹了VS Code C/C++環(huán)境配置教程(無(wú)法打開(kāi)源文件“xxxxxx.h” 或者 檢測(cè)到 #include 錯(cuò)誤。請(qǐng)更新includePath) (POSIX API),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08C++ 中回調(diào)函數(shù)詳解及簡(jiǎn)單實(shí)例
這篇文章主要介紹了C++ 中回調(diào)函數(shù)詳解及簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-06-06