(一)關於流和快取作業的函數:在標頭檔<stdio.h>中定義了三個預定義指標,分別是stdin、stdout、和stderr,它們分別代表進程的標準輸入、標準輸出和標準出錯流。
緩衝有三種方式:全緩衝、行緩衝和不帶緩衝。UNIX的預設緩衝類別:標準錯誤無緩衝,終端裝置流為行緩衝,其他為全緩衝。
1.開啟操作
(1)fopen、freopen和fdopen函數
作用:開啟一個標準I/O流。freopen函數主要用於將一個指定的檔案開啟為一個預定義的流:stdin、stdout和stderr。fdopen函數常用於由建立管道和網路通訊通道函數獲得的描述符。
格式:
#include <stdio.h>FILE *fopen(const char *file, const char *type);FILE *freopen(const char *file, constchar *type, FILE *fp);FILE *fdopen(int filedes, const char *type);
傳回值:成功則返迴文件指標,失敗返回NULL。
(2)fclose函數:用於關閉一個流。
格式:
#include <stdio.h>int fclose(FILE *fp);
傳回值:成功為0,失敗為EOF為檔案結束符標誌。
2.讀操作
3種度操作:每次讀寫一個字元的I/O、每次讀寫一行I/O(使用fgets和fputs函數)和直接I/O(使用fread和fwrite函數)
(1)getc、fgetc和getchat函數
作用:用於一次讀取一個字元
格式:
#include <stdio.h>int getc(FILE *fp);int fgetc(FILE *fp);int getchar(void);
(2)ferror、feof和clearerr函數
作用:用於流的錯誤處理,為了區分溢出或者是出錯
格式:
#include <stdio.h>int ferrpr(FILE *fp);int feof(FILE *fp);void clesrerr(FILE *fp);
(3)ungetc函數:用於從一個流讀出的字元再送迴流中。
格式:
#include <stdio.h>int ungetc(int c, FILE *fp);
3.寫操作
putc、fputc和putchar函數
作用:對應於上面的輸入函數
格式:
#include <stdio.h>int putc(int c, FILE *fp);int fputc(int c, FILE *fp);int putchar(int c);
(二)I/O類型
1.一行操作I/O
(1)gets和fgets函數
作用:給指定的緩衝區每次輸入一行
格式:
#include <stdio.h>char *fgets(char *buf, int n, FILE *fp);char *gets(char *buf);
(2)fputs和puts函數
作用:每次輸出一行到指定的流
格式:
#include <stdio.h>int fput(const cahr *string, FILE *fp);int put(const char *string);
2.二進位I/O
fread和fwrite
這是對整個結構的一次讀寫
格式:
#include <stdio.h>size_t fread(void *ptr, size_t size, size_t nobj,FILE *fp);size_t fwrite(const void *ptr, size_t size, size_t nobj,FILE *fp);
3.緩衝區I/O
read和write函數
[格式參見此文章]
4.格式化I/O
scanf和printf函數
[不做介紹]