如何使用C程序获取当前位置的角色?

时间:2012-04-26 15:58:50

标签: c file-io fseek

我正在尝试编写一个C程序来获取文件中的字符,该字符由一些字节组成,让我们说三个如下

fseek(fp,3,SEEK_CUR);

我希望打印特定字节所代表的字符。例如,如果我的文件包含下面的内容,我需要打印每个第三个字符。

//reading from file//

问题是在使用while循环后,我无法打印所需的结果。打印的第一个字符是第四个字符而不是第三个字符。

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

请你帮我理解这个错误是什么。谢谢!

2 个答案:

答案 0 :(得分:2)

fgetc将文件偏移量移1。请尝试以下方法:

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);
}

答案 1 :(得分:0)

fgetc还将文件指针前进一个字符。因此,循环的每次迭代都会使文件指针前进4个字符。出于您的目的,听起来您只想将3更改为2:fseek(fp,2,SEEK_CUR);