在C語言中,輸入輸出函數(shù)有著相當(dāng)重要的地位,它是我們的程序與用戶交互的唯一途徑,現(xiàn)在我就將C語言中比較常見的幾個輸入輸出函數(shù)介紹給大家,以下這些講解都是針對VC調(diào)試平臺。
從策劃到設(shè)計制作,每一步都追求做到細(xì)膩,制作可持續(xù)發(fā)展的企業(yè)網(wǎng)站。為客戶提供成都網(wǎng)站建設(shè)、成都做網(wǎng)站、網(wǎng)站策劃、網(wǎng)頁設(shè)計、域名申請、雅安服務(wù)器托管、網(wǎng)絡(luò)營銷、VI設(shè)計、 網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,以客戶的口碑塑造優(yōu)易品牌,攜手廣大客戶,共同發(fā)展進(jìn)步。
(一) 格式化輸入輸出函數(shù)
(1)scanf( )格式化輸入函數(shù)
格式輸入函數(shù)scanf( )函數(shù),它的格式為scanf(“格式字符串”,輸入列表)?!案袷阶址卑N類型的字符:a、格式字符,以%開頭的字符,用以說明輸入列表的數(shù)據(jù)以何種類型及格式的形式輸入。b、普通字符,要求在輸入時必須原樣一起輸入的字符。C、空白字符(空格、跳格鍵、回車鍵)作為相鄰兩個數(shù)據(jù)的默認(rèn)分隔符。
在scanf( )函數(shù)中有以下地方需要注意:
[1] 在scanf()函數(shù)中的格式字符串不存在轉(zhuǎn)義字符,所以:格式字符串中的字符除了格式字符外全部都要原樣輸入。
如:
int a;
scanf(“%d\n”,a);如果我們想把10賦值給a,就需要在鍵盤上輸入的是:
10\n回車,才能把10賦值給a,這里\n已經(jīng)不是轉(zhuǎn)義字符,而是普通字符。
[2] 輸入列表的變量如果是基本類型(即整型、實型、字符型)一定要使用取地址符(輸入字符串到字符數(shù)組的情況除外),而且后必須是變量,不允許是常量或表達(dá)式。
如:
int a,b;
scanf("%d%d",a,b); 這是不合法的。Scanf函數(shù)的作用是:按照a、b在內(nèi)存的地址將a、b的值存進(jìn)去?!癮”指a在內(nèi)存中的地址。
[3] 輸入數(shù)據(jù)時,企圖規(guī)定精度
float a;
scanf("%.2f",a);
這樣做是不合法的,輸入數(shù)據(jù)時不能規(guī)定精度,這里要記住一個程序是不能控制操作它的人來輸入數(shù)據(jù)的精度的。
[4] 輸入數(shù)據(jù)的方式與要求不符
① scanf("%d%d",a,b);
輸入時,不能用逗號作兩個數(shù)據(jù)間的分隔符,如下面輸入不合法:3,4 輸入數(shù)據(jù)時,在兩個數(shù)據(jù)之間以一個或多個空格間隔,也可用回車鍵,跳格鍵tab。
②scanf("%d,%d",a,b);
C規(guī)定:如果在“格式控制”字符串中除了格式說明以外還有其它字符,則在輸入數(shù)據(jù)時應(yīng)輸入與這些字符相同的字符。下面輸入是合法的:3,4
此時不用逗號而用空格或其它字符是不對的。3 4
又如:scanf("a=%d,b=%d",a,b);
輸入應(yīng)如以下形式:a=3,b=4
[5] 輸入字符的格式與要求不一致
在用“%c”格式輸入字符時,“空格字符”和“轉(zhuǎn)義字符”都作為有效字符輸入。
scanf("%c%c%c",c1,c2,c3);
如輸入a b c
字符“a”送給c1,字符“ ”送給c2,字符“b”送給c3,因為%c只要求讀入一個字符,后面不需要用空格作為兩個字符的間隔。
[6] 使用格式字符”%c”錄入單個字符時,空格和回車鍵等字符都會作為有效字符輸入,所以需要注意fflush(stdin)的使用。
[7] 注意輸入列表中的元素的個數(shù)要與格式字符串中的格式字符個數(shù)相同。
[8] 在輸入長整形數(shù)據(jù)和雙精度浮點數(shù)時,必須使用長度修飾符”l”。
[9] 不要在不該使用取地址符的地方使用取地址符。
如:char str[10];
Scanf(%c,str);這里不應(yīng)該加取地址符。
(2)printf( )格式輸出函數(shù)
格式輸出函數(shù)printf( ),它的格式為printf(“格式字符串”,輸出列表)。這里的格式字符串也包含三種類型的字符,但這里和scanf( )函數(shù)的字符稍有不同。這三種類型的字符分別是:a、格式字符,以%開頭的字符,用以說明輸出列表的數(shù)據(jù)以何種格式的形式輸出。B、轉(zhuǎn)義字符,提供特殊的格式化控制,由一個“\”和一個字符組成。反斜杠會使printf( )函數(shù)以特殊的方式解釋一個字符。C、普通字符,除格式字符和轉(zhuǎn)義字符外的其他字符。
在printf( )函數(shù)中有以下地方需要注意:
[1] 輸出列表由若干個輸出項組成,輸出項可以是常量、變量,也可以是表達(dá)式。
[2] 格式字符串中的格式字符要與后邊輸出列表中的元素類型一一對應(yīng)。
如:
float a=1.9999;
printf("%d",a);最終的輸出結(jié)果是一些亂碼。
再如:
int a=12;
printf("%f",a);最終的輸出結(jié)果是0.000000,這里沒有進(jìn)行類型轉(zhuǎn)換。
但是,如果想把上面的整數(shù)a以浮點數(shù)的形式輸出,必須進(jìn)行強(qiáng)制類型轉(zhuǎn)換。如:
int a=12;
printf("%f",(float)a);輸出的結(jié)果是12.000000。
[3] 格式字符串中的格式字符的個數(shù)要與輸出列表中的元素個數(shù)相同。
如:
int a=12;
printf("%d, %d",a);將在屏幕上輸出一個12以及一個亂碼。
[4] 在以%.nf這樣的格式進(jìn)行輸出浮點數(shù)時,有四舍五入。
如:
float a=1.9999;
printf(“%.2f”,a);最終的輸出結(jié)果是2.00。
[5] 長度修飾符“l(fā)”在輸出長整形數(shù)據(jù)時可不要,因為在VC中,long和int占用的字節(jié)長度都是4,所有可以不加上“l(fā)”。
[6] 格式符%±nd中,n表示一個十進(jìn)制整數(shù)輸出時在屏幕上占n個字符的寬度,如果n前面是+號,則表示輸出的整數(shù)右對齊,那么輸出的整數(shù)左邊補(bǔ)空格;如果n前面是-號,則表示輸出的整數(shù)左對齊,輸出的整數(shù)右邊補(bǔ)空格。
[7] 在-128~127之間的整數(shù)可以以字符的格式輸出,字符也可以以整型的格式輸出。
如:
int a=97;
printf("%c",a);輸出的結(jié)果是’a’,因為‘a(chǎn)’存儲在內(nèi)存中是以ASCII碼的形式存儲的。
再如:
char a='a';
printf("%d",a);輸出的結(jié)果是97,原因同上。
(二) 單字符輸入、輸出函數(shù)
C語言提供了兩個無格式控制的,專門用于輸入、輸出單個字符的函數(shù)getchar( )和putchar( )。
(1) 單字符輸入函數(shù)getchar( )
[1] getchar( )函數(shù)沒有參數(shù),有返回值,返回的就是輸入的那個字符。
[2] getchar( )函數(shù)一次只能接收一個字符。
[3] getchar( )函數(shù)同樣將空格和回車鍵等字符都會作為有效字符輸入,所以注意和fflush(stdin)函數(shù)的結(jié)合使用。
(2) 單字符輸出函數(shù)putchar( )
[1] putchar()函數(shù)有參數(shù),無返回值。參數(shù)就是它要輸出的那個字符,可以是字符變量或著字符常量
[2] putchar()函數(shù)一次向顯示器輸出一個字符。
(三) 字符串輸入、輸出函數(shù)
C語言還提供了兩個無格式控制的專門對字符串處理的函數(shù),gets( )和puts( )。
(1) gets( )用來接收用戶輸入的字符串,這是個有參數(shù)的函數(shù),參數(shù)是一個字符數(shù)組類型,輸入的字符串通過傳址的方式傳到這個字符數(shù)組中。
(2) puts()用來向用戶顯示一個字符串,它需要一個字符串參數(shù),顯示該參數(shù)并自動換行。
如:
puts(“hello, world.”);與printf(“hello,world.\n”);的效果相同,如果是puts(“hello.world.\n”)則要輸出兩個換行。也就是說,puts( )中的字符串可以包含轉(zhuǎn)義字符。
輸入字符串:
scanf("%s",in_buff);
——可以格式化輸入;第二個參數(shù)是地址,可以是字符指針或者字符數(shù)組;不提供字符數(shù)組數(shù)據(jù)越界檢查;以回車結(jié)束輸入。
gets(in_buff);
——參數(shù)為地址,可以使字符指針或者字符數(shù)組;不提供字符數(shù)組越界檢查;以回車結(jié)束輸入。
fgets(in_buff,BUFFER_SIZE + 1,stdin);
——參數(shù)1為字符指著或者字符數(shù)組,參數(shù)2為要輸入的字符個數(shù),+1表示字符串結(jié)束標(biāo)志,參數(shù)3為標(biāo)準(zhǔn)是輸入;提供越界檢查,以buffer_size+1為標(biāo)準(zhǔn);以回車結(jié)束輸入。
輸入字符:
getch();
——從控制臺讀取一個字符,但是不回顯在屏幕上;不需要回車結(jié)束。
getche();
——從控制臺讀取一個字符,回顯屏幕;不需要回車結(jié)束。
getchar();
——從控制臺讀取一個字符,回顯屏幕;需要回車結(jié)束(如果連續(xù)使用該函數(shù),要注意下次調(diào)用該函數(shù),會讀取上次輸入的回車符)。
scanf("%c",char *);
——從控制臺讀取一個字符,回顯屏幕;需要回車結(jié)束(注意事項同上)。
這就是C語言中常用到的幾個輸入輸出函數(shù),而且這幾個函數(shù)都包含在stdio.h頭文件中。在這幾個函數(shù)中,格式輸入輸出的用途最多也最容易出問題,希望提起大家的注意。
一:格式輸出函數(shù)printf()
1、調(diào)用形式一般為:printf("格式化控制字符串",輸出表列);
2、格式化控制字符串用于指定輸出格式,它有三種形式:
1、格式說明符:規(guī)定了相應(yīng)輸出表列內(nèi)容的輸出格式,以%打頭,如%d、%o等
2、轉(zhuǎn)義字符:用來輸出轉(zhuǎn)義字符所代表的控制代碼或者特殊字符,比如常用的‘\n'、‘\t'
3、普通字符:需要原樣輸出的字符。
3、輸出表列為若干需要輸出的數(shù)據(jù)項,它與格式說明符在數(shù)量和類型上一一對應(yīng);
4、格式字符m指定輸出數(shù)據(jù)所占寬度,n對實數(shù)表示輸出n位小數(shù),對字符串表示截取的字符個數(shù),+表示右對齊,通常省略。
—表示左對齊,l用于長整型數(shù)據(jù),可加在d、o、x、u前,更多格式說明符及其組合形式如下所示:
格式字符
數(shù)據(jù)對象
輸出形式
數(shù)據(jù)輸出方法
%(+)-md
int
unsigned
int
short
unsigned
short
char
十進(jìn)制整數(shù)
1、無m按實際位數(shù)輸出
2、有m輸出m位;超過m位,按實際位數(shù)輸出,不足補(bǔ)空格
3、有+(默認(rèn)為+)右對齊(左補(bǔ)空格)
4、有-左對齊(右補(bǔ)空格)
%(+)-mo
八進(jìn)制整數(shù)
%(+)-mx
十六進(jìn)制整數(shù)
%(+)-mu
無符號整數(shù)
%(+)-mld
long
unsigned
long
十進(jìn)制整數(shù)
%(+)-mlo
八進(jìn)制整數(shù)
%(+)-mlx
十六進(jìn)制整數(shù)
%(+)-mlu
無符號整數(shù)
%(+)-m.nf
float
double
十進(jìn)制小數(shù)
%(+)-m.ne
十進(jìn)制指數(shù)
%(+)-g
自動選用%f和%e中較短的輸出寬度輸出單、雙精度浮點數(shù)
%(+)-mc
char
int
short
單個字符
1、無m輸出單個字符
2、有m輸出m位,補(bǔ)空格
3、有+(默認(rèn)為+)右對齊(左補(bǔ)空格)
4、有-左對齊(右補(bǔ)空格)
%(+)-m.ns
字符串
一串字符
1.無m、n按實際字符串輸出全部字符
2、有m、n僅輸出前n個字符,補(bǔ)空格
3.有+(默認(rèn)為+)右對齊(左補(bǔ)空格)
4、有-左對齊(右補(bǔ)空格)
二:格式輸入函數(shù)scanf()
1、
調(diào)用格式一般為:scanf("格式化控制字符串",地址表列);
2、格式化控制字符串和printf()函數(shù)含義相似,所不同的是它是對輸入格式進(jìn)行控制;
3、地址表列是有若干等待輸入的數(shù)據(jù)所對應(yīng)的內(nèi)存單元地址組成,由逗號隔開,一般形式為a,a為變量;
4、地址表列在數(shù)量和類型上和格式化控制字符串中的格式說明符一一對應(yīng);
5、格式字符h表示輸入短型數(shù)據(jù),可用在d、o、x前面,m指定輸入數(shù)據(jù)所占寬度,
*表示對應(yīng)的數(shù)據(jù)項讀入后不賦給相應(yīng)的變量,更多格式說明符及其組合如下
格式字符
數(shù)據(jù)對象
輸入形式
數(shù)據(jù)輸入方法
%md
int
short
unsigned
int
unsigned
short
十進(jìn)制整數(shù)
1、無m按實際位數(shù)輸入
2、有m輸入m位,不足m則跟回車鍵
%mo
八進(jìn)制整數(shù)
%mx
十六進(jìn)制整數(shù)
%mld
long
unsigned
long
十進(jìn)制整數(shù)
%mlo
八進(jìn)制整數(shù)
%mlx
十六進(jìn)制整數(shù)
%mlf
float
double
十進(jìn)制整數(shù)
%mle
%mc
char
單個字符
1、無m取單個字符
2、有m輸入m位,僅取第一個字符
%ms
字符串
一串字符
1、無m取回車或空格前若干字符
2、有m僅取前m字符
2.putchar() getchar() 輸出輸入函數(shù)只針對單個字符的操作。3.puts(),gets() 輸出輸入函數(shù)可以單個字符操作(但是功能有限的),主要是針對字符串操作。 下面我們定義int a用scanf("%d",a)可以獲取整型a的值,a=getchar(),gets(a)無法從鍵盤獲取數(shù)字用printf("%d",a)可以打印數(shù)字a的值,putchar(a),puts(a)沒法打印數(shù)字方面:printf()和scanf()勝char a用scanf("%c",a) 可以獲取字符a的值,用a=getchar()能獲取a的值,用gets(a)不能獲取用printf("%c",a)可以打印字符a的值 用a=getchar()可以打印a的值,用puts(a)不能打印字符方面:getchar()和putchar()第1 scanf()和printf()第2 gets和puts()敗補(bǔ)充:puts()和gets()能接收和打印單個字符只限制變量是數(shù)組變量例如 char a[50]; gets(a); put(a);你輸入一個字符就會打印一個字符但如果是字符變量 char a='x'; char a; puts(a); 或 gets(a); puts(a);就無法運(yùn)行char a[50]用scanf("%s",a)能獲取數(shù)組a的值,用a=getchar()無法獲取,用gets(a)能獲取a的值用printf("%s",a)能打印數(shù)組a的值 用putchar(a)無法打印,用puts(a)能打印a的值字符串(數(shù)組)方面:gets()和puts()第一,scanf()和printf()第2,getchar()和putchar()敗可見scanf()和printf()什么都能實現(xiàn),但對字符和字符串操作沒有其他兩種好getchar()和putchar()對字符操作優(yōu)勢明顯,但不能操作數(shù)字變量,字符數(shù)組變量gets()和puts()對字符串操作優(yōu)勢明顯,但也不能操作數(shù)字變量,字符變量scanf()和printf()格式輸入輸出能同時按格式一起輸入輸出字符,數(shù)字,字符串這是其他兩種不能比的所以程序以scanf()和printf()為主,其他兩種作為輔助,發(fā)揮各自的長處。最后來個總結(jié),用程序表示#include stdio.hmain(){ char a,b[50]; printf("請輸入第一個字符:\n"); scanf(" %c",a); getchar(); //獲取前面的回車 printf("第一個的字符為:%c\n",a); printf("請輸入第二個字符:\n"); a=getchar(); printf("第二個字符為:"); putchar(a); putchar('\n'); printf("請輸入第一個字符串:\n"); scanf(" %s",b); getchar(); //獲取前面的回車 printf("第一個的字符為:%s\n",b); puts("請輸入第二個字符串:"); gets(b); puts("第二個字符串為:"); puts(b); }
常用的輸出控制符主要有以下幾個:
因為計算機(jī)中所有的數(shù)據(jù)都是二進(jìn)制 0、1 代碼,所以輸出的時候要用“輸出控制符”告訴計算機(jī)以什么形式將二進(jìn)制數(shù)據(jù)顯示出來。
輸出控制符中,%d、%f、%s、%c 是最常用的,它們分別是輸出整數(shù)、實數(shù)、字符串和字符的控制符。%.mf 雖然用得不多,但一定要重視。
擴(kuò)展資料:
C語言的輸出函數(shù):
1、printf()函數(shù)是格式化輸出函數(shù), 一般用于向標(biāo)準(zhǔn)輸出設(shè)備按規(guī)定格式輸出信息。
2、printf()函數(shù)的調(diào)用格式為: printf("格式化字符串", 參量表)。
3、格式輸出,它是c語言中產(chǎn)生格式化輸出的函數(shù)(在 stdio.h 中定義)。用于向終端(顯示器、控制臺等)輸出字符。格式控制由要輸出的文字和數(shù)據(jù)格式說明組成。要輸出的的文字除了可以使用字母、數(shù)字、空格和一些數(shù)字符號以外,還可以使用一些轉(zhuǎn)義字符表示特殊的含義。
4、作用:在c語言中產(chǎn)生格式化輸出的函數(shù)(定義在 stdio.h 中),其向終端(顯示器、控制臺等)輸出字符。
參考資料來源:百度百科-C語言
C語言是我們經(jīng)常使用的編程語言,那么如何運(yùn)用C語言輸出字符呢?下面我給大家分享一下。
工具/材料
dev c++
01
首先點擊文件菜單,然后選擇新建下面的項目,如下圖所示
02
接下來在彈出的新建項目界面中我們選擇C語言,如下圖所示
03
然后我們在main函數(shù)中聲明一個字符,如下圖所示
04
最后我們用print函數(shù)對字符進(jìn)行輸出即可,如下圖所示
putchar 函數(shù)是字符輸出函數(shù), 其功能是在顯示器上輸出單個字符。其一般形式是putchar(字符變量),對控制字符則執(zhí)行控制功能,不在屏幕上顯示。
fprintf()、fscanf()、fgets()和fputs()
舉例
fprintf(fp,"%s",words);
fscanf(fp,"%s",words);
fgets(buf,MAX,fp);//buf 是一個char數(shù)組的名稱,MAX是字符串的最大長度,fp是一個FILE指針。
fputs(buf,fp);//buf是一個char數(shù)組的名稱,fp是一個FILE指針。
擴(kuò)展資料:
傳遞函數(shù)概念的適用范圍限于線性常微分方程系統(tǒng).當(dāng)然,在這類系統(tǒng)的分析和設(shè)計中,傳遞函數(shù)方法的應(yīng)用是很廣泛的。下面是有關(guān)傳遞函數(shù)的一些重要說明(下列各項說明中涉及的均為線性常微分方程描述的系統(tǒng)):
1、系統(tǒng)的傳遞函數(shù)是一種數(shù)學(xué)模型,它表示聯(lián)系輸出變量與輸入變量的微分方程的一種運(yùn)算方法;
2、傳遞函數(shù)是系統(tǒng)本身的一種屬性,它與輸入量或驅(qū)動函數(shù)的大小和性質(zhì)無關(guān);
3、傳遞函數(shù)包含聯(lián)系輸入量與輸出量所必需的單位,但是它不提供有關(guān)系統(tǒng)物理結(jié)構(gòu)的任何信息(許多物理上完全不同的系統(tǒng),可以具有相同的傳遞函數(shù),稱之為相似系統(tǒng));
參考資料來源:百度百科-傳遞函數(shù)