我知道我的文件指针在打印此字符串后位于行尾:“xyz”。
我怎样才能让它到线的开头?(指向 x)
offset = ftell(fp);
fseek(fp, offset - sizeof("xyz") , SEEK_SET);
以上似乎不起作用。
我怎样才能做到这一点?
sizeof("xyz")
将返回 4,因为您有三个字符加上终止的空值。您应该strlen("xyz")
改用或从 sizeof 结果中减去 1 来解释空值。
beginning = ftell(fp)
我会通过在读/写你“xyz”之前发出一个来存储偏移量。然后fseek(fp, beginning, SEEK_SET);
这可能吗?
由于"xyz"
is的类型char const *
,sizeof("xyz")
将返回标准指针的大小,通常为 4 或 8。
另请注意,仅当文件以二进制模式打开时才在文本fseek
模式下不起作用,因为无法判断底层主机系统上的换行符有多大。
此外,最好使用SEEK_CUR
,因为它会更多相对于当前位置的读/写点。