c語言標準路為我們提供了檔案操作函式:
包含:fopen()/fclose() //檔案開啟與關閉函式;(引數與返回型別省略)
fgetc()/fputc() //從流中獲取字元,向檔案流中寫入字元;
getc()/putc() //與fgetc()/fputc()等價,不同的是,當getc()/putc()定義為巨集時,可能多次計算stream的值;
getchar()/putchar() //與上述兩種類似;
ungetc() //將字元轉化為unsigned char 型別寫回到流中;
fscanf()/fprintf() //用於檔案的格式化輸入輸出;
fread()/fwrite() //從流中讀/寫特定數目的特定單位大小的物件;
fgets()/fputs() //從檔案流中獲取字串,或將字串寫入流中;
其中char* fgets(char*s,int size,file*fp)最多將size-1個字元讀入s中,s的第size個儲存空間保留『\0』,因而s中保留的為字串,對於檔案,如遇到換行符,讀取結束。即:當size大於檔案一行的字元數時,fgets()執行一次讀取檔案中的一行,否則,一次讀取特定數目的字元。
(在實際中,當s由動態分配獲得時,讀取失敗 ,只能採取靜態分配
這是為什麼,求解?)。
檔案定位函式:
int fseek(file*stream,long offset,int orign)
對於二進位製流,被設定為origin開始的第offset個字元處,origin:seek_set,seek_cur,seek_end;
對於文字流,offset必須設定為0,獲是ftell()的返回值(此時origin必須設定為seek_set;
int ftell(file*stream) //返回stream流的當前檔案位置;
void rewind() //即:fseek(fp,0l,seek_set);clearerr(fp);
int fgetpos(file*stream,fpos_t *ptr) //獲取流的當前位置,記錄在*ptr中
int fsetpos(
file*stream,const fpos_t *ptr
) //將流的當前位置設定為*ptr中的位置
int feof(fp) 檔案是否到檔案結束符,若是,則返回非0值,否則返回0。
例子:從檔案name1中查詢字串,並替換為另乙個字串,結果儲存在name2檔案中
1、替換字串中的特定字串
[cpp]view plain
copy
void substitute(char *pinput, char *poutput, char *psrc, char *pdst)
// 複製剩餘字串.
strcpy(po, pi);
} else
} 測試程式:
[cpp]view plain
copy
int main()
if((fpdes=fopen(filename2,"a+"))==null)
//進行迴圈讀取
while(!feof(fpsrc))//判斷檔案是否已結束;!feof(fpsrc)
fclose(fpsrc);
fclose(fpdes);
system("pause");
return 0;
}
C語言實現檔案字元替換
包含 fopen fclose 檔案開啟與關閉函式 引數與返回型別省略 fgetc fputc 從流中獲取字元,向檔案流中寫入字元 getc putc 與fgetc fputc 等價,不同的是,當getc putc 定義為巨集時,可能多次計算stream的值 getchar putchar 與上述兩...
C語言實現檔案複製
使用c語言來複製乙個檔案 包括各種型別 主流的做法有2種 1.自定義函式 2.呼叫系統api 本文介紹自定義函式的方法。檔案型別可以粗略分類為ascii型別和二進位制型別,且大多數為二進位制型別,因此本文採用 fread 和 fwrite 閒話不多說,上 c語言實現檔案複製 srcfile 原始檔 ...
c語言實現檔案查詢
最近學到作業系統的檔案管理,研究了一下檔案查詢,如下 1.完整版 老師給出的示例 include windows.h include stdio.h int num 0 void find char path,char name findclose hfind sprintf szfind,s pa...