[問題] 讀取檔案內的stream來比較

看板C_and_CPP (C/C++)作者 (機機勳)時間15年前 (2011/06/11 18:09), 編輯推噓0(0012)
留言12則, 4人參與, 最新討論串1/3 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) DevC++ 我有一個.m1v檔,我使用以下的函式去讀取這個檔案,並且希望傳回我要的值 unsigned char sequence_header_code[4]={0x00,0x00,0x01,0xb3}; void nextbits(FILE *f){ unsigned char nextbits,element1,element2,element3,element4; fread(&element1, sizeof(unsigned char), 1, f); fread(&element2, sizeof(unsigned char), 1, f); fread(&element3, sizeof(unsigned char), 1, f); fread(&element4, sizeof(unsigned char), 1, f); unsigned char sum[4]; sum[0]=element1; sum[1]=element2; sum[2]=element3; sum[3]=element4; if(sum==sequence_header_code){printf("sequence_header_code");} } 我用這個函式連續讀取了四個byte,並且把他們存到element1~4 我希望能夠把他們四個合成為一個東西並且輸出,能讓我跟一些資料做比較 所以我接著把element1~4存到sum這個array裡面,並且接一個判斷式 如果sum==sequence_header_code的話,就print東西到螢幕上 可是我這樣子執行,是失敗的,沒有東西print出來 不知道哪裡要改? 請賜教...謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.166.96.196 ※ 編輯: OoShiunoO 來自: 218.166.96.196 (06/11 18:26)

06/11 18:35, , 1F
我發現改成sum[0]==seq....[0]&&sum[1]==seq..[1]&&...
06/11 18:35, 1F

06/11 18:36, , 2F
來去比就可以成功了,只是不知道有沒有更簡潔的寫法?
06/11 18:36, 2F

06/11 20:23, , 3F
試試將陣列宣告成sum[5]和seq[5],最後分別存入結束字元
06/11 20:23, 3F

06/11 21:07, , 4F
fread( sum, sizeof(sum), 1, f );
06/11 21:07, 4F

06/11 21:08, , 5F
if( !memcmp( sum,seq,sizeof(sum) ) ){ ... }
06/11 21:08, 5F

06/11 21:40, , 6F
呵呵 兩行就打掉一大串
06/11 21:40, 6F

06/12 00:25, , 7F
以下是濫用的方法:
06/12 00:25, 7F

06/12 00:26, , 8F
unsigned int sum,seq;
06/12 00:26, 8F

06/12 00:26, , 9F
fread(&sum,sizeof(sum),1,f);
06/12 00:26, 9F

06/12 00:27, , 10F
if(sum == seq){...}
06/12 00:27, 10F

06/12 00:28, , 11F
其實unsigned加不加無所謂...
06/12 00:28, 11F

06/12 00:32, , 12F
跑起來在比較的部份應該會比memcmp快些...
06/12 00:32, 12F
文章代碼(AID): #1DypxGHN (C_and_CPP)
文章代碼(AID): #1DypxGHN (C_and_CPP)