C語言——輸入輸出
資料的輸入輸出
輸入:從輸入裝置(如鍵盤,磁碟,光碟,掃描器等)向計算機輸入資料。
輸出:從計算機向輸出裝置(如顯示器,印表機等)輸出資料。
(一)用printf函式輸出資料
printf函式是格式輸出函式。程式設計人員必須指定輸出資料的格式,即根據資料的不同型別指定不同的格式。
printf函式的一般格式:
printf(格式控制,輸出列表)
1,格式控制包括兩部分——格式宣告和普通字元
· 格式宣告——用雙撇號括起來的一個字串。
由% 和 格式字元組成,如%d,%c等
作用是將輸出的資料轉換為指定的格式然後輸出。
· 普通字元——需要輸出時原樣輸出的字元
2,輸出列表是需要輸出的資料,可以是常量,變數,表示式
舉例如下:
int a = 9;
int b = 0;
printf("a = %d b = %d", a, b);
//%d,%d是格式宣告
//a = , b= ‘\n’是普通字元,原樣輸出
//a,b是輸出列表
3,格式字元
· d 格式符——%d——有符號十進位制整數的輸出
· u格式符——%u——無符號十進位制數的輸出
· c 格式符——%c——一個字元輸出
· s 格式符——%s——一個字串輸出
· f 格式符——%f——實數輸出,包括單精度,雙精度實數
——————%m.nf——指定資料寬度和小數位數
——————%-m.nf——輸出的資料向左對齊
· e格式符——%e——指數輸出
· i格式符——%i——與%d相同
· o格式符——%o——八進位制整數輸出,不帶符號,不輸出前導符o
· x/X格式符——%x/X——十六進位制形式輸出整數,無符號,不輸出前導符ox或oX,
用x時,a~f輸出小寫;用X時,輸出大寫
4,使用printf函式時的說明
· 使用printf函式時,格式宣告和輸出列表要一一對應,否則會出錯。
· 注意格式字元的大小寫,有的能大寫,有的不能。
· 如果想輸出字元’’%’’,則應該在格式字串中連續用兩個%
printf("%f%%\n",1.0/3);
//%f 對應 1.0/3 = 0.333333
//%%則輸出一個%
(二)用scanf函式輸入資料
與printf函式一樣, 是格式輸入函式。程式設計人員必須指定輸入資料的格式,即根據資料的不同型別指定不同的格式。
scanf函式的一般形式:
scanf(格式控制,地址列表)
1,格式控制同printf函式
2,地址列表——由若干個地址組成的列表,可以是變數的地址,或字串的首地址。
3,使用scanf函式時應該注意的問題
· 地址列表裡是地址變數,而不是變數名
如下面的程式碼是錯誤的:
int a = 0;
int b = 0;
scanf("%d%d",a,b);
應該改成
int a = 0;
int b = 0;
scanf("%d%d",&a,&b);
· 如果格式控制字串中還有其他字元,則輸入時應該在對應位置上輸入相同字元。
如:
int a = 0;
scanf("a=%d",&a);
則輸入的時候,如果輸入a為5,則應該輸入 a=5,只輸入5就錯了
· 用%c格式宣告輸入字元時,空格字元和轉義字元都作為有效字元輸入
如
scanf("%c%c%c",&c1,&c2,&c3);
//執行此函式時應該連續輸入三個字元,中間不要有空格,應該輸入abc,而不是a b c
· 在輸入數值時,在兩個數值之間應該插入空格,或其他分隔符,使系統能區分兩個數值
· 在輸入資料時,如果遇到空格,回車等不屬於字元的字元,認為該資料結束,開始下一個資料或字元。
(三)字元資料的輸入輸出
1,putchar函式輸出一個字元——putchar(c)——有引數
· putchar函式一次只能輸出一個字元。
2,getchar函式輸入一個字元——getchar()——無引數,直接從鍵盤接收字元
getchar函式一次只能接收一個字元,若需要多個字元就需要多個getchar函式。
getchar函式得到的字元可以賦給一個字元變數或者把一個整型變數,也可以補賦給任何變數,作為表示式的一部分,在表示式中利用它的值。
程式碼如下:
//從鍵盤輸入BOY三個字元,然後把它們輸入到螢幕上
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main()
{
char a, b, c;
a = getchar();
b = getchar();
c = getchar();
putchar(a);
putchar(b);
putchar(c);
putchar('\n');
system("pause");
return 0;
}
結果如下:
若使getchar函式得到的字元不賦給任何值,則程式碼如下:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main()
{
putchar(getchar());
putchar(getchar());
putchar(getchar());
putchar('\n');
system("pause");
return 0;
}
執行結果相同: