0

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

我怎样才能让它到线的开头?(指向 x)

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

以上似乎不起作用。

我怎样才能做到这一点?

4

3 回答 3

1

sizeof("xyz")将返回 4,因为您有三个字符加上终止的空值。您应该strlen("xyz")改用或从 sizeof 结果中减去 1 来解释空值。

于 2011-03-16T17:38:21.640 回答
1

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

这可能吗?

于 2011-03-16T17:38:21.590 回答
0

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

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

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

于 2011-03-16T17:42:43.717 回答