本文轉貼自 http://bbs.wefong.com/viewthread.php?tid=413612&extra=page%3D2

鍵盤,螢幕輸出入
    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表示
    %E   double的引數以指數型態列印,有一個數字在小數點前六位數字在小數點後,而在指數部份會以大寫的E表示
    %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"開頭代表轉換成十六進位數字,若以"0"開頭則轉換成八進位數字
    %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中

AwEi 發表在 痞客邦 PIXNET 留言(0) 人氣()