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

C 語言輸入輸出完全指南:從標準 I/O 到格式化控制

     編輯:C 語言入門

C 語言輸入輸出完全指南

在 C 語言程式設計中,輸入與輸出(I/O)是程式與外部世界溝通的橋樑。無論是從鍵盤讀取使用者資料,還是將運算結果顯示於螢幕、寫入檔案,都離不開標準函式庫提供的 I/O 函式。本文將系統性地介紹 C 語言的核心 I/O 機制,涵蓋標準串流、格式化函式、字元與字串處理,並附上完整範例碼供參考。

標準串流:三大預設通道

C 語言將所有裝置視為檔案處理,程式啟動時會自動開啟三個標準串流:

標準串流檔案指標對應裝置
標準輸入stdin鍵盤
標準輸出stdout螢幕
標準錯誤stderr螢幕(錯誤訊息專用)

這三個指標定義於 <stdio.h> 中,是後續所有 I/O 操作的基礎。

格式化 I/O:printf() 與 scanf()

最常用的格式化輸入輸出函式為 printf() 與 scanf(),兩者皆透過格式字串控制資料呈現與解析方式。

基本輸出範例

#include <stdio.h>
int main() {
    printf("菜鳥教程");  // 直接輸出字串
    return 0;
}

輸出:

菜鳥教程

整數格式化輸出(%d)

#include <stdio.h>
int main() {
    int testInteger = 5;
    printf("Number = %d", testInteger);
    return 0;
}

輸出:

Number = 5

浮點數輸入與輸出(%f)

#include <stdio.h>
int main() {
    float f;
    printf("Enter a number: ");
    scanf("%f", &f);   // 注意取址運算子 &
    printf("Value = %f", f);
    return 0;
}

字元級 I/O:getchar() 與 putchar()

針對單一字元讀寫,提供 int getchar(void) 與 int putchar(int c)。兩者一次處理一字元,適合迴圈處理字串。

#include <stdio.h>
int main() {
    int c;
    printf("Enter a value: ");
    c = getchar();
    printf("\nYou entered: ");
    putchar(c);
    printf("\n");
    return 0;
}

執行時輸入 runoob 並按 Enter,程式僅讀取首字元 r。

字串級 I/O:gets() 與 puts()

gets() 可讀取整行文字(含空白),直到換行或 EOF;puts() 則輸出字串並自動補上換行。注意:gets() 因緩衝區溢位風險,現代 C 標準已棄用,建議改用 fgets()。

#include <stdio.h>
int main() {
    char str[100];
    printf("Enter a value: ");
    gets(str);          // 讀取整行
    printf("\nYou entered: ");
    puts(str);          // 輸出並換行
    return 0;
}

輸入 runoob 可完整讀取並輸出。

進階格式化掃描與列印

scanf() 與 printf() 支援多種格式指標:%d 整數、%f 浮點數、%c 字元、%s 字串等。掃描時以空白字元分隔欄位,字串讀取遇空白即停止。

#include <stdio.h>
int main() {
    char str[100];
    int i;
    printf("Enter a value: ");
    scanf("%s %d", str, &i);
    printf("\nYou entered: %s %d\n", str, i);
    return 0;
}

輸入 runoob 123 可正確解析;若輸入 this is test,%s 僅讀取 this。

重點整理

  • 所有 I/O 函式需引入 <stdio.h>
  • scanf() 讀取變數需加取址運算子 &(字串陣列除外)
  • 格式指標必須與變數型別對應,否則導致未定義行為
  • 字串輸入建議使用 fgets() 避免緩衝區溢位
  • 標準錯誤 stderr 通常不經緩衝,適合即時輸出錯誤訊息

掌握這些核心 I/O 函式,即可靈活處理 C 程式的資料交互需求。

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