Linux---输入与输出函数总结
輸入輸出函數的介紹:
(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<stdio.h>或#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。
使用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
總結
以上是生活随笔為你收集整理的Linux---输入与输出函数总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LinuxC-运算符
- 下一篇: Linux下main函数带参数问题和at