六、C/C++輸出
標準檔案
C 語言把所有的裝置都當作檔案。所以裝置(比如顯示器)被處理的方式與檔案相同。以下三個檔案會在程式執行時自動開啓,以便存取鍵盤和螢幕。
標準檔案 檔案指針 裝置
標準輸入 stdin 鍵盤
標準輸出 stdout 螢幕
標準錯誤 stderr 您的螢幕
1.printf() 和 scanf() 函數
C 語言中的 I/O (輸入/輸出) 通常使用 printf() 和 scanf() 兩個函數。scanf() 函數用於從標準輸入(鍵盤)讀取並格式化, printf() 函數發送格式化輸出到標準輸出(螢幕)。
scanf_s(「%d」,&a);//輸入
printf(「%d」,a);//輸出
scanf() 期待輸入的格式與給出的 %s 和 %d 相同,這意味着必須提供有效的輸入,比如 「string integer」,如果提供的是 「string string」 或 「integer integer」,它會被認爲是錯誤的輸入。另外,在讀取字串時,只要遇到一個空格,scanf() 就會停止讀取,所以 「this is test」 對 scanf() 來說是三個字串。
%用法:
(1)%d 十進制有符號整數,%f 浮點數,%s 字串,%c 單個字元,%p 指針的值,%e 指數形式的浮點數,%x無符號以十六進制表示的整數,%o 無符號以八進制表示的整數,%p 輸出地址符
(2)可以在「%」和字母之間插進數位表示最大場寬。例如:%3d表示輸出3位整型數,不夠3位右對齊。%9.2f表示輸出場寬爲9的浮點數,其中小數位爲2,整數位爲6,小數點佔一位,不夠9位右對齊。%8s表示輸出8個字元的字串,不夠8個字元右對齊。如果字串的長度、或整型數位數超過說明的場寬,將按其實際長度輸出。但對浮點數,若整數部分位數超過了說明的整數位寬度,將按實際整數位輸出;若小數部分位數超過了說明的小數位寬度,則按說明的寬度以四捨五入輸出。
stdio.h 是一個頭檔案 (標準輸入輸出標頭檔案),#include 是一個預處理命令,用來引入標頭檔案。 當編譯器遇到 printf() 函數時,如果沒有找到 stdio.h 標頭檔案,會發生編譯錯誤。
2.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;
}
輸入一個文字並按下回車鍵時,程式會繼續並只會讀取一個單一的字元(第一字元)。
3.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;
}
輸入一個文字並按下回車鍵時,程式會繼續並讀取一整行直到該行結束。
C++ 的 I/O 發生在流中,流是位元組序列。如果位元組流是從裝置(如鍵盤、磁碟驅動器、網路連線等)流向記憶體,這叫做輸入操作。如果位元組流是從記憶體流向裝置(如顯示屏、印表機、磁碟驅動器、網路連線等),這叫做輸出操作。
I/O 庫標頭檔案(重要標頭檔案)
標頭檔案 函數和描述
<iostream>
該檔案定義了 cin、cout、cerr 和 clog 物件,分別對應於標準輸入流、標準輸出流、非緩衝標準錯誤流和緩衝標準錯誤流。
<iomanip>
該檔案通過所謂的參數化的流操縱器(比如 setw 和 setprecision),來宣告對執行標準化 I/O 有用的服務。
<fstream>
該檔案爲使用者控制的檔案處理宣告服務。
1.標準輸入流(cin)
預定義的物件 cin 是 iostream 類的一個範例。cin 物件附屬到標準輸入裝置,通常是鍵盤。cin 是與流提取運算子 >> 結合使用的。
#include <iostream>
using namespace std;
int main( )
{
char name[50];
cout << "請輸入您的名稱: ";
cin >> name;
cout << "您的名稱是: " << name << endl;
}
流提取運算子 >> 在一個語句中可以多次使用,如果要求輸入多個數據,可以使用如下語句:
cin >> name >> age;
這相當於下面 下麪兩個語句:
cin >> name;
cin >> age;
2.標準輸出流(cout)
預定義的物件 cout 是 iostream 類的一個範例。cout 物件"連線"到標準輸出裝置,通常是顯示屏。cout 是與流插入運算子 << 結合使用的
C++ 編譯器根據要輸出變數的數據型別,選擇合適的流插入運算子來顯示值。<< 運算子被過載來輸出內建型別(整型、浮點型、double 型、字串和指針)的數據項。
流插入運算子 << 在一個語句中可以多次使用,如上面範例中所示,endl 用於在行末新增一個換行符。
3.標準錯誤流(cerr)
4.標準日誌流(clog)
使用 cerr 流來顯示錯誤訊息,而其他的日誌訊息則使用 clog 流來輸出。