輸入輸出函式的介紹:
(1)所謂輸入輸出是以計算機為主體而言的。
(2)本章介紹的是向標準輸出裝置顯示器輸出資料的語句。
(3)在c語言中,所有的資料輸入/輸出都是由庫函式完成的。 因此都是函式語句。
(4)在使用c語言庫函式時,要用預編譯命令#include將有關「標頭檔案」包括到原始檔中。使用標準輸入輸出庫函式時要用到 「stdio.h」檔案,因此原始檔開頭應有以下預編譯命令:#include< stdio.h >或#include 」stdio.h」,stdio是standard input &outupt的意思。
(5)考慮到printf和scanf函式使用頻繁,系統允許在使用這兩個函式時可不加#include< stdio.h >或#include 」stdio.h」
一、字元資料的輸入輸出
( 1 ) putchar 函式(字元輸出函式)
putchar 函式是字元輸出函式, 其功能是在顯示器上輸出單個字元。其一般形式為:putchar(字元變數).對控制字元則執行控制功能,不在螢幕上顯示。使用本函式前必須要用檔案包含命令:#include或#include 「stdio.h」
( 2 ) getchar函式(鍵盤輸入函式)
getchar函式的功能是從鍵盤上輸入乙個字元。其一般形式為:getchar();
通常把輸入的字元賦予乙個字元變數,構成賦值語句,如:char c; c=getchar();使用getchar函式還應注意幾個問題:
1)getchar函式只能接受單個字元,輸入數字也按字元處理。輸入多於乙個字元時,只接收第乙個字元。
2)使用本函式前必須包含檔案「stdio.h」。
3)在tc螢幕下執行含本函式程式時,將退出tc 螢幕進入使用者螢幕等待使用者輸入。輸入完畢再返回tc螢幕。
二、格式輸入與輸出
(1)printf函式(格式輸出函式)
printf函式稱為格式輸出函式,其關鍵字最末乙個字母f即為「格式」(format)之意。其功能是按使用者指定的格式,把指定的資料顯示到顯示器螢幕上。在前面的例題中我們已多次使用過這個函式。
(1)printf函式呼叫的一般形式
printf函式是乙個標準庫函式,它的函式原型在標頭檔案「stdio.h」中。但作為乙個特例,不要求在使用 printf 函式之前必須包含stdio.h檔案。printf函式呼叫的一般形式為:printf(「格式控制字串」,輸出表列),其中格式控制字串用於指定輸出格式。格式控制串可由格式字串和非格式字串兩種組成。格式字串是以%開頭的字串,在%後面跟有各種格式字元,以說明輸出資料的型別、形式、長度、小數字數等。如:「%d」表示按十進位制整型輸出;「%ld」表示按十進位製長整型輸出;「%c」表示按字元型輸出等。非格式字串在輸出時原樣照印,在顯示中起提示作用。輸出表列中給出了各個輸出項,要求格式字串和各輸出項在數量和型別上應該一一對應。
**格式字串
格式: [標誌][輸出最小寬度][.精度][長度]型別
1)型別:型別字元用以表示輸出資料的型別,其格式符和意義如下表所示:
d,以十進位制形式輸出帶符號整數(正數不輸出符號)
o,以八進位制形式輸出無符號整數(不輸出字首0)
x或x ,以十六進製制形式輸出無符號整數(不輸出字首ox)
u,以十進位制形式輸出無符號整數
f,以小數形式輸出單、雙精度實數
e或e,以指數形式輸出單、雙精度實數
g或g,以%f或%e中較短的輸出寬度輸出單、雙精度實數
c,輸出單個字元
s,輸出字串
2)標誌:標誌字元為-、+、#、空格四種,其意義下表所示:
-,結果左對齊,右邊填空格
+,輸出符號(正號或負號)
空格,輸出值為正時冠以空格,為負時冠以負號
#,對c,s,d,u類無影響;對o類,在輸出時加字首o;對x類,在輸出時加字首0x;對e,g,f 類當結果有小數時才給出小數點
3)輸出最小寬度:用十進位制整數來表示輸出的最少位數。若實際位數多於定義的寬度,則按實際位數輸出,若實際位數少於定義的寬度則補以空格或0。
4)精度:精度格式符以「.」開頭,後跟十進位制整數。本項的意義是:如果輸出數字,則表示小數的位數;如果輸出的是字元,則表示輸出字元的
個數;若實際位數大於所定義的精度數,則截去超過的部分。
5.長度:長度格式符為h,l兩種,h表示按短整型量輸出,l表示按長整型量輸出。
(2)scanf函式(格式輸入函式)
scanf函式稱為格式輸入函式,即按使用者指定的格式從鍵盤上把資料輸入到指定的變數之中。
(1) scanf函式的一般形式
scanf函式是乙個標準庫函式,它的函式原型在標頭檔案「stdio.h」中,與printf函式相同,c語言也允許在使用scanf函式之前不必包含stdio.h檔案。scanf函式的一般形式為:scanf(「格式控制字串」,位址表列);其中,格式控制字串的作用與printf函式相同,但不能顯示非格式字串,也就是不能顯示提示字串。位址表列中給出各變數的位址。位址是由位址運算子「&」後跟變數名組成的。這個位址就是編譯系統在記憶體中給a,b變數分配的位址。在c語言中,使用了位址這個概念,這是與其它語言不同的。應該把變數的值和變數的位址這兩個不同的概念區別開來。變數的位址是c編譯系統分配的,使用者不必關心具體的位址是多少。
(2) 格式字串
格式字串的一般形式為:%[輸入資料寬度][長度]型別其中有方括號的項為任選項。各項的意義如下:
型別:表示輸入資料的型別,其格式符和意義如下表所示。
d,輸入十進位制整數
o,輸入八進位制整數
x,輸入十六進製制整數
u,輸入無符號十進位制整數
f或e,輸入實型數(用小數形式或指數形式)
c,輸入單個字元
s,輸入字串
「*」符:用以表示該輸入項,讀入後不賦予相應的變數,即跳過該輸入值。
如:scanf("%d %*d %d",&a,&b);
當輸入為:123時,把1賦予a,2被跳過,3賦予b。
寬度:用十進位制整數指定輸入的寬度(即字元數)。
例如:scanf("%5d",&a);
輸入:12345678
只把12345賦予變數a,其餘部分被截去。
又如:scanf("%4d%4d",&a,&b);
輸入:12345678
將把1234賦予a,而把5678賦予b。
長度:長度格式符為l和h,l表示輸入長整型資料(如%ld) 和雙精度浮點數(如%lf)。h表示輸入短整型資料。
使用scanf函式還必須注意以下幾點:
1))scanf函式中沒有精度控制,如:scanf("%5.2f",&a);是非法的。不能企圖用此語句輸入小數為2位的實數。
2))scanf中要求給出變數位址,如給出變數名則會出錯。如 scanf("%d",a);是非法的,應改為scnaf("%d",&a);才是合法的。
3))在輸入多個數值資料時,若格式控制串中沒有非格式字元作輸入資料之間的間隔則可用空格,tab或回車作間隔。c編譯在碰到空格,tab,回車或非法資料(如對「%d」輸入「12a」時,a即為非法資料)時即認為該資料結束。
4))在輸入字元資料時,若格式控制串中無非格式字元,則認為所有輸入的字元均為有效字元。
例如: scanf("%c%c%c",&a,&b,&c);
輸入為:def
則把』d』賦予a, 』 』 賦予b,'e』賦予c。
只有當輸入為:def
時,才能把』d』賦於a,'e』賦予b,'f』賦予c。
如果在格式控制中加入空格作為間隔,
如:scanf ("%c %c %c",&a,&b,&c);
則輸入時各資料之間可加空格。
如果格式控制串中有非格式字元則輸入時也要輸入該非格式字元。
例如:scanf("%d,%d,%d",&a,&b,&c);
其中用非格式符「 , 」作間隔符,故輸入時應為:5,6,7
又如:scanf(「a=%d,b=%d,c=%d」,&a,&b,&c);
則輸入應為:a=5,b=6,c=7
如輸入的資料與輸出的型別不一致時,雖然編譯能夠通過,但結果將不正確。
函式的輸入與輸出
1 格式化的輸入函式 printf printf 格式控制字串 輸出表列 1 格式控制字串 轉義字元 字元形式 含義 asc ii a 響鈴 7 n 換行,將當前位置移到下行開頭 10 t水平製表 跳到下乙個tab位置 9 b 退格,將當前位置移到前一列 8 r回車,將當前位置移到本行開頭 13 f...
linux基礎 輸入與輸出
乙個程式執行起來最少會開啟三個檔案,分別是標準輸入 0 標準輸出 1 錯誤輸出 2 三個檔案都是fd 檔案描述符 管理。linux下使用標準輸入檔案stdin和標準輸出檔案stdout,來表示每個命令的輸入和輸出,還使用乙個標準錯誤輸出檔案stderr用於輸出錯誤資訊。這三個標準輸入輸出系統預設與控...
MATLAB的輸入與輸出函式
輸出2.fprintf 由於 matlab不使用 stdin 和 stdout,而是使用command window進行互動。因此不需要使用 scanf 和 printf 等 c c 函式來提示使用者進行輸入。但在某些情況下需要提示使用者進行輸入並列印相關結果時,可使用如下函式。matlab中使用i...