程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 應用C說話調換文件中某一行的辦法

應用C說話調換文件中某一行的辦法

編輯:關於C++

應用C說話調換文件中某一行的辦法。本站提示廣大學習愛好者:(應用C說話調換文件中某一行的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是應用C說話調換文件中某一行的辦法正文


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

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說話調換文件中某一行的辦法到這就根本停止了,年夜家都學會了嗎?願望這篇文章的內容對年夜家的進修和任務能帶來必定的贊助,假如有疑問,年夜家可以留言交換。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved