利用C語言替換文件中某一行的方法
文件中存貯的內(nèi)容如下所示:
11 1122 0 1122 * * 0 0 22 222 0 222 * * 0 0 33 333 0 333 * * 0 0
通過使用下面的幾個函數(shù),fopen
,fprintf
,fscanf
,fseek
,ftell
。
具體的函數(shù)函數(shù)原型如下所示:
FILE*fopen(const char*filename,const char *mode); int fprintf(FILE*stream,const char *format,...) int fscanf(FILE* stream,const char *format,...) int fseek(FILE*stream,long offset,int origin) long ftell(FILE* stream)
首先,數(shù)據(jù)寫入到文件中的是追加的形式。
具體的寫入代碼如下所示:
主要寫入時要指定每個數(shù)據(jù)的寬度,若不指定,當(dāng)修改某行的數(shù)據(jù),修改后的長度大于修改前得長度,將影響文件中的下一行。制定寬度之后,只要修改后的長度不大于制定的寬度,都不影響下面的內(nèi)容。(這是注意點)
FILE *fp=fopen("clientinfo.txt","ar+"); Clientinfo info; memset(&info,0,sizeof(Clientinfo)); 。。。。 。。。。/*完成對info結(jié)構(gòu)體的賦值*/ fprintf(fp,"%10s %10s %10d %10s %10s %10s %10d %10d",info.id,info.nickname,\ info.online,info.pwd,info.encryp,info.ip,info.port,info.fd); fprintf(fp,"\n"); fclose(fp);
修改處的代碼如下所示,整個代碼是我在MFC中實現(xiàn)的:
FILE *fp=fopen("clientinfo.txt","r+"); Clientinfo info; long nline=0,n; memset(&info,0,sizeof(Clientinfo)); int oldline=0;/*記錄匹配位置的前一行的偏移量*/ CString str; while((n=fscanf(fp,"%s %s %d %s %s %s %d %d",info.id,info.nickname,\ &info.online,info.pwd,info.encryp,info.ip,&info.port,&info.fd))!=EOF) { str.Format("%d",nline); MessageBox(str); if(strncmp(info.id,id,id.GetLength())==0)/*查找要修改的位置*/ { oldline=nline; break; } nline=ftell(fp); } fseek(fp,oldline,SEEK_SET);/*定位到要修改的位置,注意,這個位置是上一次讀的最后,故寫的時候要先寫換行,第一行除外*/ if(oldline!=0) { fprintf(fp,"\n"); } fprintf(fp,"%10s %10s %10d %10s %10s %10s %10d %10d",info.id,info.nickname,\ info.online,info.pwd,info.encryp,info.ip,info.port,info.fd); fprintf(fp,"\n"); fclose(fp);
下面是修改后的數(shù)據(jù),修改第二行,沒有影響前后的數(shù)據(jù)。
11 1122 0 1122 * * 0 0 22 222f 0 222f * * 0 0 33 333 0 333 * * 0 0
總結(jié)
利用C語言替換文件中某一行的方法到這就基本結(jié)束了,大家都學(xué)會了嗎?希望這篇文章的內(nèi)容對大家的學(xué)習(xí)和工作能帶來一定的幫助,如果有疑問,大家可以留言交流。
上一篇:將CString字符串輸入轉(zhuǎn)化成整數(shù)的實現(xiàn)方法
欄 目:C語言
本文標(biāo)題:利用C語言替換文件中某一行的方法
本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/2052.html
您可能感興趣的文章
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用函數(shù)刪除字符
- 04-02c語言的正則匹配函數(shù) c語言正則表達(dá)式函數(shù)庫
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言中對數(shù)函數(shù)的表達(dá)式 c語言中對數(shù)怎么表達(dá)
- 04-02c語言用函數(shù)寫分段 用c語言表示分段函數(shù)
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排序法函數(shù)
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段函數(shù)
- 04-02C語言中怎么打出三角函數(shù) c語言中怎么打出三角函數(shù)的值
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求階乘


閱讀排行
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達(dá)
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對數(shù)函數(shù)的表達(dá)式 c語言中對
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
隨機(jī)閱讀
- 01-10C#中split用法實例總結(jié)
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-10delphi制作wav文件的方法
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 04-02jquery與jsp,用jquery
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-11ajax實現(xiàn)頁面的局部加載