如何用fseek设置文件指针

时间:2011-03-16 17:33:26

标签: c file fseek

我知道我的文件指针在打印此字符串后位于行尾:“xyz”。

如何才能将它带到行首? (指向x)

offset = ftell(fp);
fseek(fp, offset - sizeof("xyz") , SEEK_SET);

以上似乎不起作用。

我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:1)

sizeof("xyz")将返回4,因为您有三个字符加上终止空值。您应该使用strlen("xyz")代替,或者从sizeof结果中减去一个来计算null。

答案 1 :(得分:1)

我会在读/写“xyz”之前发出beginning = ftell(fp)来存储偏移量。 然后fseek(fp, beginning, SEEK_SET);

这可能吗?

答案 2 :(得分:0)

由于"xyz"的类型为char const *sizeof("xyz")将返回标准指针的大小,通常为4或8。

另请注意fseek文本模式下不起作用,仅当文件已在二进制模式下打开时,因为无法判断底层主机上的新行有多大系统

此外,最好使用SEEK_CUR,因为它会更多地相对于当前位置的读/写点。