您好,登錄后才能下訂單哦!
標準I/O操作:
1、FILE* fopen(const char* path, const char* mode)
FILE :文件打開的各種狀態信息的指針;
path: 文件路徑;注意,目錄文件只能以只讀形式打開,不能進行寫;
mode: 文件打開的模式: “r”(只讀,且文件必須存在),“w”(只寫,如果文件不存在,則創建,如果已經存在,則將其長度截斷為0,從頭寫),“a”(表示追加數據到末尾,如果文件不存在,則創建),“r+”,“w+”,“a+”;
2、int fgetc(FILE *stream) 從文件或終端中讀取一個字節返回,本來應該返回uchar類型,但是函數原型的返回值是int型,所以要轉化為擴展為int型的;這個函數既可以從終端讀,也可以從文件中讀;
3、int getchar(void) 從終端(只能從終端)中讀取一個字節,返回時擴展為int型,原因同上;
4、int fputc(int c,FILE* stream);int putchar(int c); 為寫入函數,寫入是文件必須是可寫的;
5、int fseek(FILE* stream, long offset ,int whence) 用于設置讀寫指針偏移,返回相對于文件起始位置的偏移量大小;
6、int ftell(FILE *stream) 用于返回當前讀寫指針的位置;
7、void rewind(FILE *stream) 用于讀寫指針移動到文件的起始位置;
8、char* gets(char *s)從標準輸入一行保存在緩沖區,但是永遠不要用這個函數;因為未指定緩存區的大小,所以很容易產生緩沖區溢出,造成錯誤;
9、char* fgets(char *s, int size, FILE* stream) 表示從指定的文件中讀取一行,到用戶指定的緩沖區;返回的指針是指針s移動后的位置;
注意: fgets()只適用于讀不含‘\0’的文本文件,因為fgets()會自動在末尾加‘\0’,但是,如果用戶在輸入中也輸入‘\0’,那么就無法識別是fgets自己加的,還是用戶加的;另外,由于’\0‘的ASIIC 是0x00,所以在不能讀二進制文件;
10、int fputs(const char *s, FILE* stream); 將字符串寫入到文件中,不含末尾的’\0‘;
int puts(const char* s); 將字符串寫入到標準輸入中;
11、對文件進行的任何操作,都要先明白讀寫指針在什么地方,這個決定了你讀寫的位置;
12、fread(void *str, size_t size, size_t nmemb, FILE* stream) 從文件stream 中讀取nmemb 個大小為size字節大小的數據到 str;
fwrite(void *str, size_t size, size_t nmemb, FILE* stream) 同上,是寫入文件;
13、全緩沖:等待緩沖區寫滿以后,才寫入內核;常規文件用此方式;
行緩沖:等待有換行符的時候,就寫入內核;標準輸入輸出用這種方式;
不帶緩沖:用戶每次寫操作都要調用系統調用,寫入內核;
int fflush(FILE* stream) 用于將緩沖區的數據立即寫入內核;成功返回0;
14、標準文件流:FILE: stdin ,stdout, stderr;
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。