如何使用C程序获取当前位置的字符?
问题描述:
我试图写一个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);
}
你能帮我理解这是什么错误吗?谢谢!
答
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);
}
答
fgetc还将文件指针前进一个字符。因此,循环的每次迭代都会使文件指针前进总共4个字符。出于您的目的,听起来您只是想将3更改为2:fseek(fp,2,SEEK_CUR);
'fp!= EOF'是bollocks。 – cnicutar 2012-04-26 16:04:51
'fp!= EOF'必须让你的编译器给出一个警告(你不能比较一个指针和一个int)。注意编译器警告,将它们视为错误。 – pmg 2012-04-26 21:08:16
@pmg感谢您的建议。我仍处于学习阶段,将来会很小心。 – Shash 2012-04-28 06:04:46