国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C > 正文

利用C語言替換文件中某一行的方法

2020-01-26 14:26:15
字體:
來源:轉載
供稿:網友

文件中存貯的內容如下所示:

11    1122     0    1122     *     *     0     0 22    222     0    222     *     *     0     0 33    333     0    333     *     *     0     0  

通過使用下面的幾個函數,fopenfprintffscanffseekftell

具體的函數函數原型如下所示:

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) 

首先,數據寫入到文件中的是追加的形式。

具體的寫入代碼如下所示:

主要寫入時要指定每個數據的寬度,若不指定,當修改某行的數據,修改后的長度大于修改前得長度,將影響文件中的下一行。制定寬度之后,只要修改后的長度不大于制定的寬度,都不影響下面的內容。(這是注意點)

FILE *fp=fopen("clientinfo.txt","ar+"); Clientinfo info; memset(&info,0,sizeof(Clientinfo)); 。。。。 。。。。/*完成對info結構體的賦值*/ 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中實現的: 

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); 

下面是修改后的數據,修改第二行,沒有影響前后的數據。  

    11    1122     0    1122     *     *     0     0     22    222f     0    222f     *     *     0     0     33    333     0    333     *     *     0     0

總結

利用C語言替換文件中某一行的方法到這就基本結束了,大家都學會了嗎?希望這篇文章的內容對大家的學習和工作能帶來一定的幫助,如果有疑問,大家可以留言交流。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 息烽县| 渝北区| 辉南县| 图木舒克市| 惠水县| 长汀县| 古蔺县| 东乡族自治县| 读书| 阳新县| 东城区| 东乡族自治县| 临安市| 高要市| 正蓝旗| 连城县| 那曲县| 玉山县| 庄河市| 榆中县| 集贤县| 米脂县| 霍州市| 尉氏县| 阳高县| 济南市| 绩溪县| 太白县| 南华县| 阆中市| 濮阳县| 辰溪县| 柘城县| 清新县| 海伦市| 合水县| 安义县| 离岛区| 西藏| 阿巴嘎旗| 洪湖市|