C語言實現檔案字元替換

2021-07-02 06:36:58 字數 1862 閱讀 6364

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...