程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言入門知識 >> C 輸入 & 輸出

C 輸入 & 輸出

編輯:C語言入門知識

C 輸入 & 輸出

當我們提到輸入時,這意味著要向程序填充一些數據。輸入可以是以文件的形式或從命令行中進行。C 語言提供了一系列內置的函數來讀取給定的輸入,並根據需要填充到程序中。

當我們提到輸出時,這意味著要在屏幕上、打印機上或任意文件中顯示一些數據。C 語言提供了一系列內置的函數來輸出數據到計算機屏幕上和保存數據到文本文件或二進制文件中。

標准文件

C 語言把所有的設備都當作文件。所以設備(比如顯示器)被處理的方式與文件相同。以下三個文件會在程序執行時自動打開,以便訪問鍵盤和屏幕。

標准文件文件指針設備 標准輸入stdin鍵盤 標准輸出stdout屏幕 標准錯誤stderr您的屏幕

文件指針是訪問文件的方式,本節將講解如何從屏幕讀取值以及如何把結果輸出到屏幕上。

C 語言中的 I/O (輸入/輸出) 通常使用 printf() 和 scanf() 兩個函數。

scanf() 函數用於從標准輸入(鍵盤)讀取並格式化, printf() 函數發送格式化輸出到標准輸出(屏幕)。

實例

#include <stdio.h> // 執行 printf() 函數需要該庫 int main() { printf("菜鳥教程"); //顯示引號中的內容 return 0; }

編譯以上程序,輸出結果為:

菜鳥教程

實例解析:

  • 所有的 C 語言程序都需要包含 main() 函數。 代碼從 main() 函數開始執行。
  • printf() 用於格式化輸出到屏幕。printf() 函數在 "stdio.h" 頭文件中聲明。
  • stdio.h 是一個頭文件 (標准輸入輸出頭文件) and #include 是一個預處理命令,用來引入頭文件。 當編譯器遇到 printf() 函數時,如果沒有找到 stdio.h 頭文件,會發生編譯錯誤。
  • return 0; 語句用於表示退出程序。

%d 格式化輸出整數

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

編譯以上程序,輸出結果為:

Number = 5

在 printf() 函數的引號中使用 "%d" (整型) 來匹配整型變量 testInteger 並輸出到屏幕。

%f 格式化輸出浮點型數據

#include <stdio.h> int main() { float f; printf("Enter a number: "); // %f 匹配浮點型數據 scanf("%f",&f); printf("Value = %f", f); return 0; }

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; }

當上面的代碼被編譯和執行時,它會等待您輸入一些文本,當您輸入一個文本並按下回車鍵時,程序會繼續並只會讀取一個單一的字符,顯示如下:

$./a.out
Enter a value :runoob

You entered: r

gets() & puts() 函數

char *gets(char *s) 函數從 stdin 讀取一行到 s 所指向的緩沖區,直到一個終止符或 EOF。

int puts(const char *s) 函數把字符串 s 和一個尾隨的換行符寫入到 stdout

實例

#include <stdio.h> int main( ) { char str[100]; printf( "Enter a value :"); gets( str ); printf( "\nYou entered: "); puts( str ); return 0; }

當上面的代碼被編譯和執行時,它會等待您輸入一些文本,當您輸入一個文本並按下回車鍵時,程序會繼續並讀取一整行直到該行結束,顯示如下:

$./a.out
Enter a value :runoob

You entered: runoob

scanf() 和 printf() 函數

int scanf(const char *format, ...) 函數從標准輸入流 stdin 讀取輸入,並根據提供的 format 來浏覽輸入。

int printf(const char *format, ...) 函數把輸出寫入到標准輸出流 stdout ,並根據提供的格式產生輸出。

format 可以是一個簡單的常量字符串,但是您可以分別指定 %s、%d、%c、%f 等來輸出或讀取字符串、整數、字符或浮點數。還有許多其他可用的格式選項,可以根據需要使用。如需了解完整的細節,可以查看這些函數的參考手冊。現在讓我們通過下面這個簡單的實例來加深理解:

實例

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

當上面的代碼被編譯和執行時,它會等待您輸入一些文本,當您輸入一個文本並按下回車鍵時,程序會繼續並讀取輸入,顯示如下:

$./a.out
Enter a value :runoob 123

You entered: runoob 123 

在這裡,應當指出的是,scanf() 期待輸入的格式與您給出的 %s 和 %d 相同,這意味著您必須提供有效的輸入,比如 "string integer",如果您提供的是 "string string" 或 "integer integer",它會被認為是錯誤的輸入。另外,在讀取字符串時,只要遇到一個空格,scanf() 就會停止讀取,所以 "this is test" 對 scanf() 來說是三個字符串。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved