You are on page 1of 3

鍵盤,螢幕輸出入

printf(const char* format, ...)


格式化輸出到螢幕
puts(char*)
輸出字串至螢幕
putchar(char)
輸出字元至螢幕
scanf(const char* format, ...)
格式化輸入從鍵盤
gets(char*)
輸入字串從鍵盤
char getchar()
輸入字元從鍵盤
char陣列(字元緩衝區)輸出入
sprintf(char* str,const char* format, ...)
格式化輸出至字元緩衝區
sscanf(const char* str,const char* format, ...)
格式化輸入至字元緩衝區
案輸出入
FILE* //案結構體指標
FILE* fopen (const char* filename, const char* mode)
開案,若開案失敗回傳NULL
mode代表的意義如下
r 開唯讀,案必須存在
r+ 開可讀寫,案必須存在
w 開唯寫,若案存在將清理成空白,若案不存在則建立該案
w+ 開可讀寫,若案存在將清理成空白,若案不存在則建立該案
a 開唯寫,若案不存在建立該,若案存在則容加到其後面
a+ 開可讀寫,若案不存在建立該,若案存在則容加到其後面
b 和上述mode組合,代表案為二進位
int fclose (FILE*)
關閉案,若關閉案成功傳回0失敗傳回-1
fprintf(FILE* stream,const char* format, ...)
格式化輸出至案
fscanf(FILE* stream,const char* format, ...)
格式化輸入從案
fputc(int ch, FILE* stream)
字元輸出至案,若寫入失敗回傳EOF
int fgetc(FILE*)
字元輸入從案,若讀取至結尾回傳EOF
fputs(const char*, FILE*)
字串輸出至案
char* fgets(char*, int, FILE*)
字串輸入從案
fseek (FILE* stream,long offset,int mode);
移動案流讀寫位置,offset將依據mode的移動讀寫位置
mode有SEEK_SET(案開頭),SEEK_END(案結尾),SEEK_CUR(目前位置),成功傳回1,錯誤傳回-1
size_t fread(void* ptr,size_t size,size_t nmemb,FILE* stream)
ptr為欲儲存的位置,size為單筆的大小,nmemb為數量
傳回為實際讀取到的筆數,若比nmemb小則可能讀到尾或發生錯誤
size_t fwrite(const void* ptr,size_t size,size_t nmemb,FILE* stream)
ptr為欲儲存的位置,size為單筆的大小,nmemb為數量
傳回為實際寫入的筆數
feof(FILE* stream)
檢案是否讀取至尾,己到尾傳回非零
int remove(const char* pfthname)
刪除案,成功傳回0,失敗傳回1
rename(const char* oldPath,const char* newPath)
更改案名稱或位置,若newPath所指定的案存在則會被刪除,成功回傳0,失敗回傳-1
ferror(FILE* stream)
檢案匯流是否發生錯誤,有錯誤發生傳回非0
perror(const char* s)
印出上個函式發生的錯誤,先印出字串s再加上錯誤原因字串,錯誤原因由全域變數errno的來決定
文字換行和案結束字碼補充
EOF(0x1a) 案結束字碼
0x0b Carriage Return CR
0x0a Line Feed LF
win環境中,文字換行為CR+LF,unix環境則只有CR
printf系列格式明
引數format字串包下三種字元型態
1.一盤文字,如a b 1 2
2.控制字元,如\n \t
3.以%符號開頭的格式字元,如%d %f %x
格式字元型式如下
%[flags][width][.prec]type
[]為選擇性欄位,有需要再填
[flags]
- 會將此一數向左對齊
+ 會將此一數印出正負號
# 針對各種進制數字會加印出其識別符號,針對小數點會加印0
0 當有指定欄位時無數字的欄位會補上0
[width]欄位的最小長度,若此欄位為*則長度將由引數決定
[.prec]所使用的情況有下列五種
1.正整數的最小位數
2.在浮點數中代表小數位數
3.在%g代表有效位數的最大
4.在%s代表字串的最大長度
5.若為*符號則代表引數為最大長度
type
%d 整數的引數會被轉成有號的十進位數字
%u 整數的引數會被轉成無號的十進位數字
%o 整數的引數會被轉成無號的八進位數字
%x 整數的引數會被轉成無號的十六進位數字,並以小寫abcdef表示
%X 整數的引數會被轉成無號的十六進位數字,並以大寫ABCDEF表示
%f double的引數會轉成十進位的數字並取到小數點以下六位,四捨五入
%e double的引數以指數型態列印,有一個數字在小數點前六位數字在小數點後,而在指數部份會以
%E double的引數以指數型態列印,有一個數字在小數點前六位數字在小數點後,而在指數部份會以
%g double的引數會自動選擇以%f或%e的格式來列印,其介定的方式是根據數及所設定的有效位數
%G double的引數會興%g一樣但印出指數時會以大寫E表示
%c 整數的引數會被轉成unsigned char型態印出
%s 指向字串的引數被逐字印出,直到出現NULL字元為止
%p 用來列印位址,一般引數皆為void* 型態
scanf系列格式明
scanf()會將輸入的資料根據引數format字串來轉換並格式化資料
scanf()格式轉換型式如下
%[ * ][size][l][h]type
[]為選擇性欄位,有需要再填
[ * ]代表該對應的欄位資料忽略不儲存
[size]允許輸入的資料長度
[l]輸入的數以long int或double型態儲存
[h]輸入的數以short int型態儲存
type
%d 輸入的資料會被轉成一有號的十進位數字(int)
%i 輸入的資料會被轉成一有號的十進位數字,若輸入資料以"ox"或"oX"開頭代表轉換成十六進位數
%o 輸入的資料會被轉成無號的八進位數字
%u 輸入的資料會被轉成無號的正整數
%x 輸入的資料會被轉成無號的十六進位數字,轉換後存於unsigned int型態變數
%X 同%x
%f 輸入的資料為有號的浮點數,轉換後存於float變數中
%e 同%f
%E 同%f
%g 同%f
%s 輸入資料為空白字元為終止的字串
%c 輸入資料為單一字元
[] 讀取資料但只允許中括號的字元,如[a-z]
[^] 讀取資料但不允許中括號後的字元,如[^0-9]
例:
scanf("%10s",str); 輸入字串,但只儲存前10個字元到str中
scanf("%[a-z]",str); 輸入的字串只儲存小寫的英文字母到str中
scanf("%[^a-z]",str);輸入的字串除掉小寫的英文字母後儲存到str中

You might also like