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

C 語言輸入輸出函數 printf 與 scanf 完全指南

     編輯:關於C語言

printf 與 scanf 是 C 語言最基礎、使用頻率最高的標準 I/O 函數,屬於格式化輸入輸出函數。掌握其格式控制字串與參數對應規則,是避免輸出亂碼、輸入錯誤的關鍵。

函數原型與參數結構

int printf(const char *format, ...);
int scanf(const char *format, ...);

兩者參數均由兩部分組成:

  1. 格式控制字串:雙引號括起的字串,包含格式佔位符(如 %d、%lf)與普通字符(原樣輸出/匹配)。
  2. 參數列表:對應格式佔位符的變量地址(scanf)或值(printf),多參數用逗號分隔。

常用格式佔位符對照表

類型printfscanf說明
int%d, %i%d, %i有號十進制整數
unsigned int%u%u無號十進制整數
float%f, %e, %g%f, %e, %g單精度浮點數
double%lf, %le, %lg%lf, %le, %lg雙精度浮點數(注意 scanf 必須 %lf)
char%c%c單字符
char*%s%s字串(以空白分隔)
指針%p%p地址值(十六進制)

核心差異:scanf 需傳地址

int x; double y;
scanf("%d%lf", &x, &y);  // 必須加 & 取地址
printf("%d %.2f", x, y); // 直接傳值

常見錯誤:scanf("%d", x) 忘記 &,導致寫入隨機記憶體,程式崩潰或靜默錯誤。

完整範例:求兩數最大值

#include <stdio.h>

int max(int a, int b);

int main() {
    int x, y, z;
    printf("input two numbers:\n");
    scanf("%d%d", &x, &y);  // 讀入兩整數
    z = max(x, y);          // 調用自定義函數
    printf("maximum=%d\n", z);
    return 0;
}

int max(int a, int b) {
    return (a > b) ? a : b;
}

執行流程解析

  1. printf 輸出提示字串到標準輸出(螢幕)。
  2. scanf 從標準輸入(鍵盤)讀取,按格式解析,存入 x、y。
  3. 調用 max(),傳值參數 a=x, b=y,返回較大值。
  4. printf 輸出結果。

進階技巧與避坑指南

  • 寬度與精度:%10d(寬度 10 右對齊),%.2f(保留 2 位小數)。
  • scanf 掃描集:%[^\n] 讀整行(含空格),%*d 跳過讀取不賦值。
  • 返回值檢查:scanf 返回成功匹配項數,務必檢查以確保輸入有效。
  • 緩衝區殘留:scanf("%c") 會讀取殘留換行符,前置空格 " %c" 可跳過空白字符。

熟練掌握 printf/scanf 格式控制,是 C 語言處理數據交互的基本功,亦是後續文件操作、網絡通訊序列化的基石。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved