0

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

fseek(fp,3,SEEK_CUR);

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

//reading from file//

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

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

你能帮我理解这有什么错误吗?谢谢!

4

2 回答 2

2

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);
}
于 2012-04-26T16:03:12.193 回答
0

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

于 2012-04-26T16:04:01.583 回答