看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) LINUX 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) NO 問題(Question): fseek的語法問題, 與BMP讀檔相關 餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) if(Used_Colors_Number == 0) { temp=(img->width*3)%4; if(temp) temp=4-temp; for( i=(img->height-1) ; i>=0 ; i-- ) { for( j=0 ; j<img->width ; j++ ) { fscanf(fptr, "%c%c%c",&img->RGB[(i*width+j)*3+0], &img->RGB[(i*width+j)*3+1], &img->RGB[(i*width+j)*3+2]); } fseek(fptr,temp,1); } } else { for( i=0 ; i<Used_Colors_Number ; i++ ) { fscanf(fptr, "%c%c%c",&((Used_Color+i)->B), &((Used_Color+i)->G), &((Used_Color+i)->R)); fseek(fptr,1,1); } temp=(width)%4; for( i=(height-1) ; i>=0 ; i-- ) { for( j=0 ; j<width ; j++ ) { fscanf(fptr, "%c",&Pixel); img->RGB[(i*width+j)*3+0] = Used_Color[Pixel].B; img->RGB[(i*width+j)*3+1] = Used_Color[Pixel].G; img->RGB[(i*width+j)*3+2] = Used_Color[Pixel].R; } fseek(fptr,temp,1); } } 補充說明(Supplement): 不懂的是, 為什麼fseek他那樣寫, 因為我上網查fseek沒人在第三個位置填入1, 我知道他fseek是怕圖檔一行超過4byte倍數的規定, 超過的部分想要用這個移, 但是我看不懂她為什麼第三個位置寫入1, 而且temp再換行的時候都不用加減運算@@ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.175.128.7
LPH66:1 == SEEK_CUR 08/19 16:52
guanrulee:原來如此 囧@@ 08/19 16:53
LPH66:順帶一提, SEEK_SET 是 0, SEEK_END 是 2 08/19 16:53
LPH66:不過還是建議用這些名字比較清楚 08/19 16:54
guanrulee:謝謝你^^ 08/19 16:55
loveme00835:本來就應該使用巨集, 因為巨集常數所替換的值是任意的 08/19 16:58
loveme00835:唯一能保證的只有"值不一樣"這一點 08/19 16:59
loveme00835:原po還會回來看這篇嗎? 囧 08/19 17:07
angleevil:這個好像會喔 08/19 17:10
guanrulee:因為這是別人寫的code, 加上對c沒這麼熟 所以只好發文 08/19 17:17
guanrulee:問看看XD 謝謝各位幫忙解答^^ 08/19 17:17