問題タブ [lseek]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2846 参照

c++ - 「FILE* {aka _IO_FILE*}」から「int」への無効な変換

この小さな例をコンパイルしようとすると...

... への呼び出しに関するコンパイラ エラーが発生しましたlseek()。出力は次のとおりです。

記録のために: 私も と の両方lseek(*foo, 5, SEEK_CUR);を使用してみlseek(&foo, 5, SEEK_CUR);ましたが、それは事態を悪化させるだけです。(私は本当にそれが何かを解決するとは思っていませんでした。)

lseek(3) のマンページを参照:

概要
off_t lseek(int fildes , off_t offset , int whence );

説明lseek() 関数は、次のように
、ファイル記述子fildesに関連付けられたオープン ファイル記述のファイル オフセットを設定します。

[…………]

これは、最初の引数がファイル記述子(この場合はfoo ) であることを意味すると解釈します。

Q: ここで何が問題なのですか?

0 投票する
1 に答える
66 参照

c - C の write() 中にファイルの末尾にある数値を更新する

常にファイルの最後にある数値 ( num_commit )を更新するようにプログラムをテストしています。この数は、ファイルが書き込まれた回数を追跡するために使用されます。lseek/SEEK_END を使用していますが、これがどのように機能するかをまだ理解しようとしています。可能性をテストするために次のコードを書きましたが、num_commitが上書きされているようです。これを行う正しい方法についての助けを探しています:

num_commit が mods 値によって上書きされていることがわかるように、これが私の出力です。

num_segs=10、name_length=7、real_segname=testfil、mods=200、num_commit=200

0 投票する
1 に答える
413 参照

c - lseek を使用してファイルの末尾にスペースを追加できない

既に開いているファイルにテキストを追加しようとしています。ファイルの最後に pid 番号を追加したいと思います。例: Lorem ipsum dolor sit amet orci aliquam. 14872. ファイルの最後の文字と pid の最初の桁の間のスペースをプログラムに出力させることに失敗することを除いて、私のコードは正常に動作します。lseek()ファイルの末尾からのオフセットとして追加して使用しようとしましたが1、前に述べたように、惨めに失敗しました。どうやら期待される結果がすべて得られているため、何が問題なのかわかりません。

そして、この出力:

私には意味がありません。だからここに私のコードがあります:

0 投票する
1 に答える
2091 参照

c - lseekを使用して穴のあるファイルを作成するには?

lseekを使用してファイルに穴をあける方法を学んでいます。

これは私がこれまでに書いたコードです...

このコードをコンパイルして実行すると、lseek エラーが発生し、「Harry Potter」という名前がファイルに挿入されません。これは、上記のコードを実行したときの出力です。

私はすべてのエラーをキャッチしようとさえしています。さらに助けてください。

0 投票する
1 に答える
398 参照

c - lseek/read/write を使用して大きなバイナリの一部を削除する C

私の目的は、バイナリ ファイル内の 1 つ以上の部分を削除することです。これを行うには、必要な部分のみを 2 番目のファイルにコピーします。私は2つの方法を持っています。最初のものはFile1 (オフセットskip付き) から File2 にcountバイトを追加する必要があります。

2 番目のメソッドは、File1 の残り (スキップから最後まで) を File2 に追加する必要があります。

私の質問は次のとおりです。

  1. これが期待どおりに機能しないのはなぜですか?
  2. これを 64 ビット システムの大きなファイル (>4GB) で使用するには、何を変更する必要がありますか?

前もって感謝します

0 投票する
1 に答える
111 参照

c - lseek関数を使用してcのファイル位置を変更した後の破損したファイル(同じサイズを取得しますが、コンテンツが破損しています)

ソケット アプリケーションで lseek を使用して、パケットがドロップされた場合にファイルの位置を変更し、ドロップされたパケットを再送信しているため、ファイルの位置を複数回変更しており、位置を設定していると確信しています。関連するパラメーターを正しく設定します。クライアント側で同じファイルサイズを取得しても問題ありませんが、ファイルの位置を変更すればするほど、送信されたファイルを開くことができなくなります。

なぜそれが起こっているのか分かりますか?

0 投票する
2 に答える
1307 参照

c - LinuxのCでファイルの最後の5行を印刷する

open、read、write、close、lseek などの基本的な関数を使用して、ファイルの最後の 5 行を出力するプログラムを C で作成する必要があります。これまでの私のコード:

誰でも私を助けることができますか?これらの文字を配列に格納してから逆方向に出力する必要があると思いますが、方法がわかりません。