2.3 C語言中的IO操作
檔案IO:
size_t -> typedef unsigned int size_t
FILE * fopen(const char * filename, const char *mode);失敗返回NULL
mode 的合法取值
"r" 讀方式開啟
"w" 建立文字用於寫,存在則清空
"a" 追加方式開啟,沒有檔案會建立
"r+" 讀寫方式開啟
"w+" 建立文字用於讀寫,存在則清空
"a+" 追加;沒有則建立檔案
後面加b表示對檔案進行的是二進位制操作
FILE *freopen(const char *filename, const char *mode , FILE *stream);
以mode方式開啟檔案,並關聯到stream指定的流,一般關聯到stdin,stdout,stderr
int fflush(FILE *stream); 清洗所有的輸出流
int fclose(FILE *stream);
將快取寫入到流,然後關閉流,成功放回0,出錯放回EOF
int remove(const char *filename); 刪除檔案,成功放回0
int rename(const char *oldname, const char *newname);
檔案重新命名。失敗放回非0值
FILE *tmpfile(void);
以"wb+"方式建立一個臨時檔案,該檔案在程式結束時自動刪除,失敗放回NULL
char *tmpnam(char s[L_tmpnam]);
生成一個檔名,但不生成檔案,感覺沒什麼卵用
int setvbuf(FILE *stream, char *buf, int mode, size_t size);
控制流的緩衝,mode的合法取值_IOFBF,_IOLBF,_IONBF.
buf為NULL時自動分配緩衝區,size為緩衝區大小,成功放回0
void setbuf(FILE *stream , char *buf);
設定流緩衝,但buf為NULL時關閉流的緩衝。
標準IO和字串IO:
stdin, stdout和stderr,分別是標準輸入,標準輸出,標準錯誤輸出。
int fprintf(FILE *stream ,const char *format, ...); 格式化輸出
int sprintf(char *s, const char *format, ...); 格式化輸出到字串
int fsconf(FILE *stream ,const char *format, ...); 格式化輸入
int ssconf(const char *s, const char *format, ...); 格式化輸入到字串
int fgetc(FILE *stream); 從流中讀取一個字元,到檔案未或錯誤放回EOF
int getc(FILE *stream); 等價於fgetc(),但有一點點不同,getc定義巨集..
char *fgets(char *s, int n, FILE *stream);
int fputc(int c, FILE *stream); 輸出一個字元到流
int putc(int c, FILE *stream); 等價於fputc(),但有一點點不同,putc定義巨集..
int fputs(const char *s, FILE *stream);
int getchar(void); getchar() = getc(stdin);
char *gets(char *s); 不安全的,已不被使用。
int putchar(int c); puchar(c) = putc(c,stdout);
int puts(const char *s);
int ungetc(int c, FILE *stream);
size_t fread(void *ptr, size_t size, size_t nobj, FILE *stream);
size_t fwrite(const void *ptr, size_t size, size_t nobj, FILE *stream);
int fseek(FILE *stream, long offset, int origin);
設定流的檔案位置,成功放回0
long ftell(FILE *stream);
放回流的當前檔案位置,出錯放回-1L
void rewind(FILE *stream); 相當於fseek(stream, 0L, SEEK_SET);
int fgetpos(FILE *stream, fpos_t *ptr); 儲存流的位置到ptr,成功放回0
int fsetpos(FILE *stream, const fpos_t *ptr); 設定流的位置到ptr,成功放回0