我知道我的文件指针在打印此字符串后位于行尾:“xyz”。
如何才能将它带到行首? (指向x)
offset = ftell(fp);
fseek(fp, offset - sizeof("xyz") , SEEK_SET);
以上似乎不起作用。
我怎样才能做到这一点?
答案 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
,因为它会更多地相对于当前位置的读/写点。