この文字列「xyz」を印刷した後、ファイルポインタが行末にあることはわかっています。
どうすれば行頭に入れることができますか?(×を指して)
offset = ftell(fp);
fseek(fp, offset - sizeof("xyz") , SEEK_SET);
上記は機能していないようです。
どうすればそれを達成できますか?
sizeof("xyz")
3 つの文字と終端の null があるため、4 が返されます。null を考慮して、代わりに使用strlen("xyz")
するか、sizeof 結果から 1 を減算する必要があります。
beginning = ftell(fp)
「xyz」を読み書きする前に、を発行してオフセットを保存します。それでfseek(fp, beginning, SEEK_SET);
これは可能でしょうか?
の型が"xyz"
ischar const *
でsizeof("xyz")
あるため、通常は 4 または 8 の標準ポインターのサイズを返します。
また、ファイルがバイナリ モードで開かれている場合にのみ、テキストモードでfseek
は機能しないことに注意してください。これは、基になるホスト システムで改行がどのくらい大きいかを知ることができないためです。
さらにSEEK_CUR
、現在の位置に対する読み取り/書き込みポイントが増えるため、 を使用することをお勧めします。