C語言的輸入輸出總結

2021-07-30 07:08:10 字數 4127 閱讀 2387

putchar ():把變數中的乙個字元常量輸出到顯示器螢幕上;

getchar ();從鍵盤上輸入乙個字元常量,此常量就是該函式的值;

printf ();把鍵盤中的各類資料,加以格式控制輸出到顯示器螢幕上;

scanf   ();從鍵盤上輸入各類資料,並存放到程式變數中;

puts    ():把陣列變數中的乙個字串常量輸出到顯示器螢幕上;

gets    ():從鍵盤上輸入乙個字串常量並放到程式的陣列中.

sscanf(); 從乙個字串中提取各類資料。

putchar()   輸出乙個字元

getchar()   輸入流中獲取乙個字元

例如:char c = getchar();

putchar(c);

格式化輸入輸出scanf()和printf()是最有用的,所以重點講一下。

printf():

一般形式:

printf("格式控制".輸出列表);

eg : printf("a=%d,b=%f,c=%c\n",a,b,c);

1;格式控制.

格式控制是用雙引號括起來的字串,也稱"轉換控制字串",它包含以下兩部分資訊.

格式說明:由"%"和格式字元組成,如%d,%f,%c,他的作用是把輸出資料轉換為指定格式輸出,格式的說明總是由"%"字元開始的.

普通字元:需要原樣輸出的字元,或者是一些有特殊含義的字元,如\n,\t。

2;輸出列表

就是需要輸出的一些資料,也可以是表示式,如果在函式中需要輸出多個變數或表示式,則要用逗號隔開.

一些特殊字元的輸出:

單引號,雙引號,和反斜槓的輸出在前面加轉義字元」\」

如:」\』」, 「\」」   , 「\\」

%的輸出用兩個連在一起的%%,即printf(「%%」);

常用的格式說明如下:

格式字元

d 以十進位制形式輸出帶符號整數(正數不輸出符號)

o 以八進位制形式輸出無符號整數(不輸出字首o)

x 以十六進製制形式輸出無符號整數(不輸出字首ox)

u 以十進位制形式輸出無符號整數

f 以小數形式輸出單精度實數

lf 以小數形式輸出雙精度實數

e 以指數形式輸出單、雙精度實數

g 以%f%e中較短的輸出寬度輸出單、雙精度實數

c 輸出單個字元

s 輸出字串scanf(「%s」,ss)//不需要&;

這裡強調一下:網上很多文章都說f 和lf是一樣的,即不管單精度,雙精度浮點數,都可以用f,但我在poj上做過測試,輸出double時用f確實也可以,但讀入時,用f就報wa,所以大家如果對double進行讀寫的話,都用lf吧。

說到double,再囉嗦一句,建議大家要用到浮點數時都用double,不要用float,因為在很多情況下,float精度不夠會導致wa。

特殊:對64位整數的輸入輸出,在poj上的c++環境下(即vc),64位整數是:

__int64   (注意int前面是兩個下劃線)

輸入輸出格式為」%i64d」.

在g++環境下(即dev c++) 64位整數是

longlong

輸入輸出格式為」%lld」.

輸出寬度

用十進位制整數來表示輸出的最少位數。 注意若實際位數多於定義的寬度,則按實際位數輸出,若實際位數少於定義的寬度則補以空格或0。 精度

精度格式符以「.」開頭,後跟十進位制整數。意義是:如果輸出數字,則表示小數的位數;如果輸出的是字元,則表示輸出字元的個數;若實際位數大於所定義的精度數,則截去超過的部分。

標誌格式字元

- 結果左對齊,右邊填空格

+ 輸出符號(正號或負號)空格輸出值為正時冠以空格,為負時冠以負號

例如:double c=24212345.24232;

printf(「%020.4」); 表示輸出精確到小數點後4位,輸出佔20位,若有空餘的位補0.

scanf:

scanf的很多用法都是和printf對應的,故不再贅述。

說一下scanf乙個特別好用的地方,就是可以濾去一些不想要的東西。

舉例說明如下:

比如輸入為日期 yyyy-mm-dd,就可以這樣寫:

intyear,moth,day;

scanf(「%d-%d-%d」,&year,&moth,&day);

再比如:

scanf("%3d%*3d %2d",&m,&n);      輸入113 118 69回車(系統將113賦予m,將69賦予n,因為*號表示跳過它相應的資料所以118不賦予任何變數)

puts()用的不多,且基本都能用printf()代替,故不再多說。

gets()是從輸入流中獲取一行字串放入字元陣列中:

char in[100];

gets(in);

大家可能最容易出錯的地方就是字串的輸入,所以強調一下:

能進行字元,字串輸入的有:

getchar(), scanf(「%c」);scanf(「%s」), gets()

其中getchar() 和 scanf(「%c」)的功能是一樣的。

需要注意的是,這兩個函式讀入的是輸入流中當前位置的字元,

比如:scanf(「%d」,&n);

c = getchar();

假設輸入 67/(假設「/」代表回車),則第乙個scanf讀入乙個整數67後,當前輸入流的位置是67之後,即指向回車符,所以第二個getchar()讀入的就是乙個回車符了,即 c = 『\n』。

同樣,gets()也是從當前位置讀入一行字串。

比如:scanf(「%d」,&n);

gets(str);

此時讀入字元陣列中的字串就是「\n」 了

所以通常在用scanf讀入乙個非字串的型別之後,如果要讀入字元,或字元陣列,都用乙個額外的getchar()把回車符讀掉,若後面跟的不止乙個回車符,可能還有多餘的空格的話,就用gets()讀掉。

和以上不同的是,scanf(「%s」) 讀入的時候是會忽略掉空格,回車和製表符的。並且以空格,回車和製表符作為字串結束的標誌。

經常會有這樣的題,輸入第一行是乙個整數,接下來每行的第乙個是乙個字元,用來表示某種操作,後面再跟一些資料,比如:

4a 100 2

b 23

a 23 89

b 34

像這種輸入就需要小心,讀入字元時不要讀成回車符。

為了防止意外,我一般是這樣處理這類輸入的:

charmodel[2];

scanf(「%d」,&n);

for(…,…,…)

else}

對於c++的輸入輸出就不再詳細的講了,因為cin,cout的速度實在太慢,不推薦使用,我一般都是到萬不得已時才用。

比如當你要讀入字串到string 物件中時,就只能用cin了,這時候還有乙個常見的問題,就是如何將一整行字串讀入乙個string 中,這就要用到getline函式了。

用法為:

getline(cin, str);

第乙個引數就是標準輸入流cin ,第二個引數是接收讀入資料的string物件,本來還有第三個引數,是結束符的標誌,但通常用它預設的就可以了,所以不用管。

用string的成員方法length()或者size()都可以取得字串長度:

#include #include using namespace std;

int main()

二者沒有本質的區別,大部分情況都可以互換使用。但是表示的意義略有不同。

length()比較直觀,表示的就是該字串的長度。

size()表示的是string這個容器中的元素個數。如果使用過std::vector之類的容器的話,可以把string看做是乙個vector(這裡只是舉例,並不能等價), char就是這個容器的元素型別。那麼size()表示的就是這個vector(容器)中char的個數。

注意區分這個getline和cin.getline的區別:

cin.getline的用法如下:

char str[20];

cin.getline(str,20); 表示從讀入的一行字串中,取最多20各字元放入字元陣列str中,注意此處的str是字元陣列,而上面的str是string物件。

另外需要注意的是,千萬不要把cout和printf混用,因為cout是帶緩衝的而printf不帶,所以會使得輸出的資料順序混亂。

C語言檔案輸入輸出總結

檔案輸入輸出 1 fopen include file fopen const char fname,const char mode mode方式 r 開啟乙個檔案,可以讀取檔案。w 開啟乙個檔案,可以寫入檔案,先將檔案的長度截為零。如果該檔案不存在則先建立之。a 開啟乙個檔案,可以寫入檔案,向已有...

C語言輸入輸出用法總結

二 輸入 三 關於緩衝區的一些總結 名稱用法 putchar 只能輸出單個字元 puts 只能輸出字串,並且輸出結束後會自動換行 printf 可以輸出各種型別的資料 對於printf 函式的格式控制符完整形式如下 flag width precision type tpye表示輸出型別,比如 d ...

C語言 輸入輸出相關總結

複習c語言,將以前對輸入輸出的總結筆記轉到網上,以便以後查閱。其中一些例子是取自印度大佬編寫的名為c語言教程,解決了許多疑惑。不得不說印度編寫的教 的棒。getchar 可以接受鍵入的任何值,包括製表符和回車鍵 int main int argc,char ar int main int argc,...