首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C 語言入門講座:輸入輸出函數詳解(printf/scanf/putchar/getchar)

     編輯:關於C語言

資料輸出函數

printf 格式化輸出

原型在 stdio.h,特例可不含頭文件直接用。一般形式:

printf("格式控制字串", 輸出項列表);

格式控制字串含:

  • 格式字串:以 % 開頭,指定型別、寬度、精度等。如 %d 十進位整數、%c 字元、%s 字串。
  • 非格式字串:原樣輸出,作提示用。

格式字串完整語法:[標誌][最小寬度][.精度][長度]類型

類型意義
d帶符號十進位整數
o八進位無符號整數(無前綴)
x十六進位無符號整數(無前綴)
u十進位無符號整數
f小數形式實數
e指數形式實數
g%f/%e 較短者
c單一字元
s字串

標誌:- 左對齊、+ 強制符號、空格 正數前加空格、# 八/十六進位加前綴、實數強制小數點。
寬度:最小輸出位數,不足補空格或 0。
精度:.n,實數指小數位數,字串指輸出字元數。
長度:h short、l long/double。

求值順序陷阱

Turbo C printf 參數求值順序為**自右向左**,但輸出順序仍左到右。例:

int i=8;
printf("%d\n%d\n%d\n%d\n%d\n%d\n", ++i, --i, i--, i++, -i--);

輸出結果與多行 printf 不同,因參數求值順序不同。

putchar 字元輸出

putchar(字元變數); // 輸出單一字元,含控制字元(如 \n)

需 #include <stdio.h>。

資料輸入函數

scanf 格式化輸入

一般形式:scanf("格式控制字串", 位址列表);

  • 格式字串**不可含非格式字串**(無提示功能),故常先 printf 提示。
  • 位址列表用 &變數名 取得變數位址。

格式字串語法:%[*][寬度][長度]類型

類型意義
d十進位整數
o八進位整數
x十六進位整數
u無符號十進位整數
f/e實數(小數/指數)
c單一字元
s字串

*:跳過該輸入項(不賦值)。
寬度:限制讀入字元數,如 %5d 只讀 5 位。
長度:l long/double、h short。

scanf 關鍵注意事項

  1. 無精度控制:%5.2f 非法。
  2. 必須給位址:scanf("%d",a) 錯,必 &a。
  3. 數值輸入分隔:格式串無非格式字元時,用空白/Tab/換行分隔;遇非法字元(如 %d 讀 12A)停止。
  4. 字元輸入:%c 視空白、轉義字元為有效字元。scanf("%c%c%c",...) 輸入 a b c → 讀 'a',' ','b'。若格式串加空白 "%c %c %c" 才可用空白分隔。
  5. 格式串含非格式字元:輸入時必須輸入該字元。如 scanf("%d,%d",...) 需輸入 5,6。
  6. 輸入輸出型別一致:int a; scanf("%d",&a); printf("%ld",a); 結果錯誤,需 long a; scanf("%ld",...)。

getchar 字元輸入

char c; c = getchar(); // 從鍵盤讀單一字元
  • 只能接收單一字元,數字也按字元處理,多字元只取第一個。
  • 需 #include <stdio.h>。
  • TC 環境下執行會切換到使用者畫面等待輸入。

範例:輸入三小寫字母,輸出 ASCII 碼與大寫

void main() {
    char a,b,c;
    printf("input character a,b,c\n");
    scanf("%c %c %c", &a, &b, &c);
    printf("%d,%d,%d\n%c,%c,%c\n", a,b,c, a-32,b-32,c-32);
}

補充:sizeof 查看型別位元組長度

printf("%d,%d,%d,%d,%d", sizeof(int), sizeof(long), sizeof(float), sizeof(double), sizeof(char));
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved