[問題] 一個讀寫檔案的問題..

看板C_and_CPP (C/C++)作者 (adios)時間15年前 (2011/03/11 14:48), 編輯推噓0(003)
留言3則, 2人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) linux 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) no 問題(Question): 我想要對一檔案讀寫 但是會多出一行 是最後一行的部份內容.. 程式碼(Code):(請善用置底文網頁, 記得排版) 該檔長這樣 =======meter.txt start===== light5,2ECB2801004B1200,light,- light6,2ECB2801004B1200,light,- A2,C3192101004B2000,light,- A3,C3192101004B2000,light,- curtain1,5ac32801004b1200,curtain,room1 curtain3,C3192101004B1200,curtain,- =======meter.txt end===== 底下為code int main() { FILE *fp; int i=0; int count=0; char array[50][100]={'\0'}; char name[50][30]={'\0'}; char ieee[50][20]={'\0'}; char class[50][20]={'\0'}; char room[50][30]={'\0'}; char buf[100]={'\0'}; int buf_len=0; fp = fopen("meter.txt","rb+"); if(fp!=NULL) { while(fgets(array[count],100,fp)) { strcpy(name[count],strtok(array[count],",\n")); strcpy(ieee[count],strtok(NULL,",\n")); strcpy(class[count],strtok(NULL,",\n")); strcpy(room[count],strtok(NULL,",\n")); count++; } fseek(fp,0,SEEK_SET); for(i=0;i<count;i++) { if(strcmp(name[i],"A2")==0) { sprintf(buf,"%s\n","this is work!!"); buf_len=strlen(buf); fwrite(buf,buf_len,1,fp); continue; } else { sprintf(buf,"%s,%s,%s,%s\n",name[i],ieee[i],class[i],room[i]); buf_len=strlen(buf); fwrite(buf,buf_len,1,fp); } } return 0; } 補充說明(Supplement): 不知道哪邊出錯... 本預期結果是這樣 light5,2ECB2801004B1200,light,- light6,2ECB2801004B1200,light,- this is work!! A3,C3192101004B2000,light,- curtain1,5ac32801004b1200,curtain,room1 curtain3,C3192101004B1200,curtain,- 結果變這樣 light5,2ECB2801004B1200,light,- light6,2ECB2801004B1200,light,- this is work!! A3,C3192101004B2000,light,- curtain1,5ac32801004b1200,curtain,room1 curtain3,C3192101004B1200,curtain,- 00,curtain,- <==多這一行 這問題可能很基本 但就是不知道問題在哪裡 請大大開示... -- 5L36f6d6I5207573K657273206f6E62066Y697265O666f78206172U65207375636b2e -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.78.167.138

03/11 15:26, , 1F
原PO差不多該學怎麼DEBUG程式碼了
03/11 15:26, 1F

03/11 15:31, , 2F
原來是fp大小沒變..用ftruncate(fileno(fp),0); 搞定..
03/11 15:31, 2F

03/11 15:32, , 3F
雖然也是問人的..orz
03/11 15:32, 3F
文章代碼(AID): #1DUSMuAM (C_and_CPP)
文章代碼(AID): #1DUSMuAM (C_and_CPP)