2012-04-26 207 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);