2012-04-26 198 views
0

我試圖寫一個C程序來獲取角色是由一些字節OFSET在該文件中,可以說,三成以下如何使用C程序獲取當前位置的字符?

fseek(fp,3,SEEK_CUR); 

我要打印的特定字節表示的字符。例如,如果我的文件包含類似下面的內容,則需要打印每三個字符。

//reading from file// 

的問題是,使用while循環結束後,我無法打印所需的結果。打印的第一個字符是第四個字符而不是第三個字符。

while(fp!=EOF) 
{ 
    fseek(fp,3,SEEK_CUR); 
    ch = fgetc (fp); 
    printf("%c",ch); 
} 

你能幫我理解這是什麼錯誤嗎?謝謝!

+0

'fp!= EOF'是bollocks。 – cnicutar 2012-04-26 16:04:51

+2

'fp!= EOF'必須讓你的編譯器給出一個警告(你不能比較一個指針和一個int)。注意編譯器警告,將它們視爲錯誤。 – pmg 2012-04-26 21:08:16

+0

@pmg感謝您的建議。我仍處於學習階段,將來會很小心。 – Shash 2012-04-28 06:04:46

回答

1

fgetc將文件偏移量移動一。請嘗試以下操作:

fseek(fp,3,SEEK_CUR); 
while(fp!=EOF) 
{ 
    ch = fgetc (fp); // moves offset by 1 
    fseek(fp,2,SEEK_CUR); // moves offset by another 2 
    printf("%c",ch); 
} 
0

fgetc還將文件指針前進一個字符。因此,循環的每次迭代都會使文件指針前進總共4個字符。出於您的目的,聽起來您只是想將3更改爲2:fseek(fp,2,SEEK_CUR);