1. 程式人生 > >2.3 C語言中的IO操作

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