0

この文字列「xyz」を印刷した後、ファイルポインタが行末にあることはわかっています。

どうすれば行頭に入れることができますか?(×を指して)

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

上記は機能していないようです。

どうすればそれを達成できますか?

4

3 に答える 3

1

sizeof("xyz")3 つの文字と終端の null があるため、4 が返されます。null を考慮して、代わりに使用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"ischar const *sizeof("xyz")あるため、通常は 4 または 8 の標準ポインターのサイズを返します。

また、ファイルがバイナリ モードで開かれている場合にのみ、テキストモードでfseekは機能しないことに注意してください。これは、基になるホスト システムで改行がどのくらい大きいかを知ることができないためです。

さらにSEEK_CUR、現在の位置に対する読み取り/書き込みポイントが増えるため、 を使用することをお勧めします。

于 2011-03-16T17:42:43.717 に答える