[問題] 一個讀寫檔案的問題..
開發平台(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
03/11 15:26, 1F
→
03/11 15:31, , 2F
03/11 15:31, 2F
→
03/11 15:32, , 3F
03/11 15:32, 3F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章