ø
最簡單的輸入機制是使用
getchar()
從標準輸入中(鍵盤)一次讀取乙個字元:
int getchar(void)
getchar
函式在每次被呼叫時返回下乙個輸入字元。若遇到檔案尾,則返回
eof
ø在許多環境中,可使用符號
<
來實現輸入重定向,它將把鍵盤輸入替換為檔案輸入:
如果程式
prog
中使用了函式
getchar
,則命令列
prog < infile
將使得程式
prog
從輸入檔案
infile
(而不是鍵盤)中讀取字元 ø
函式int putchar(int c)
用於輸出資料
putchar(c)
將字元c
送至標準輸出上,在預設情況下,標準輸出為螢幕顯示 函式
putchar
將返回輸出的字元,如果發生錯誤,則返回
eof
ø通常情況下,可以使用
」>
輸出檔名
」的格式將輸出重定向到某個檔案中
如果程式
prog
中使用了函式
putchar
,則命令列
prog >
輸出檔名
將把程式
prog
的輸出從標準輸出裝置重定向到檔案中 ø
如果系統支援管道,那麼命令列:
prog | anotherprog
將把程式
prog
的輸出從標準輸出通過管道重定向到
anotherprog
的標準輸入中
int printf(char *format, arg1, arg2, …)
函式printf
在輸出格式
format
的控制下,將其引數進行轉換與格式化,並在標準輸
出裝置上列印出來,它的返回值為列印的字元數 ø
格式字串包含兩種型別的物件: 1.
普通字元
在輸出時,普通字元將原樣不動地複製到輸出流中
2.轉換說明
轉換說明並不直接輸出到輸出流中,而是用於控制
printf
中引數的轉換和列印。
每個轉換說明都由乙個百分號字元
(%)開始,並以乙個轉換字元結束
在字元%和轉換字元中間可能依次包含下列組成部分: ø
負號:用於指定被轉換的引數按照左對齊的形式輸出 ø
數:用於指定最小字段寬度。轉換後的引數將列印不小於最小字段寬度的
字段。如果有必要,字段左邊(如果使用左對齊方式,則為右邊)多
餘的字元位置用空格填充以保證最小字段寬 ø
小數點:用於將字段寬度和精度分開 ø
數:用於指定精度,即指定字串中要列印的最大字元數、浮點數小數點
後的位數、整型最少輸出的數字數目 ø
字母h,l:字母h
表示將整數作為
short
型別列印 字母
l表示將整數作為
long
型別列印
函式的運算順序:從右向左計算
int a = 1;
printf (「%d, %d, %d\n」, a++, a++, a);
=> 2, 1, 3
volatile int a = 1; //申明a
是易變的,防止編譯器優化
printf (「%d, %d, %d\n」, a++, a++, a);
=>2, 1, 1 ø
向乙個指定的流輸出
int fprintf (file *stream, const char *format, arg1, arg2, …)
返回值是實際寫入的字元數,若出錯則返回乙個負值
printf (…)
函式等價於
fprintf (stdout, …)
ø向乙個指定的緩衝區輸出
int sprintf (char *s, char *format, arg1, arg2, …)
函式的輸出被寫入到字串
s中,並以
』\0』
結束。s
必須足夠大,以足夠容納下輸
出的結果。該函式返回實際輸出的字元數,不包括
』\0』
int scanf (const char *format, …)
scanf
函式從標準輸入中讀取字串行,按照
format
中的格式說明對字串行進行解
釋,並把結果儲存到其餘的引數中 ø
當scanf
函式掃瞄完其格式串,或者碰到某些輸入無法與格式控制說明匹配的情況時,該函式將終止,同時,成功匹配並賦值的輸入項的個數將作為函式值返回,所以,該函式的返回值可以用來確定已匹配的輸入項的的個數。如果到達檔案的結尾,該函式將返回
eof ø返回
eof與
0是不同的,
0表示下乙個輸入字元與格式串中的第乙個格式說明不匹配。 ø
下一次呼叫
scanf
øint fscanf (file *stream, const char *format, …)
fscanf
函式根據格式串
format
從流stream
中讀取輸入,並把轉換後的值賦給後續各個引數,其中的每個引數都必須是乙個指標。當格式串
format
用完時,函式返回。如果到達檔案的末尾或在轉換輸入前出錯,該函式返回
eof;否則,返回實際被轉換並賦值的輸入項的數目
scanf(…)
函式與fscanf(stdin, …)
相同øint sscanf(char *string, char *format, arg1, arg2, …)
用於從乙個字串(而不是標準輸入)中讀取字串行
它按照格式引數
format
中規定的格式掃瞄字串
string
,並把結果分別儲存到
arg1, arg2, …
這些引數中。這些引數必須是指標。
scanf, fscanf, sscanf
函式的所有引數都必須是指標
scanf(「%d」, n); 錯誤
scanf(「%d」, &n); 正確
編譯器在編譯時一般檢測不到這類錯誤
C語言 輸入與輸出
標頭檔案包含 include 空指標也在這個標頭檔案中,int p null 讀取輸入的函式scanf 列印輸出的函式printf int scanf const char format,函式從標準輸入流 stdin 讀取輸入,並根據提供的 format 來瀏覽輸入。int printf const...
輸入與輸出points c語言筆記
輸入與輸出問題 c語言筆記 一 字元的輸入與輸出 1.putchar 1 原型 int putchar int c 第乙個int 表示函式的返回值,也就是說,函式如果正確執行,則返回輸出字元的字元碼 否則,則輸出eof。第二個int 表示函式需要乙個int型別的引數,該引數即為函式輸出字元的asci...
輸入與輸出 重學C之七
之前有寫過一篇部落格用來介紹c語言的i o庫函式,i o就是所謂的輸入與輸出,所以這篇部落格和之前的多少有一些重複的部分。輸入 輸出功能並不是c語言本身的組成部分。ansi標準精確的定義了這些函式,所以,在任何可以使用c語言的系統中都有這些函式的相容形式。在程式中使用標準庫提供的功能,程式可以不經修...