問題タブ [fseek]

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 に答える
90 参照

php - ファイルの分割と結合

私は一種の解決策の「始まり」を持っています。私はこの関数を書きました(間隔について申し訳ありません):

(繰り返しますが、申し訳ありません。:))

ファイルを特定のバイトに分割するための「指示」を提供します。私は次のようなことをしようとしました:

しかし、それは無限ループに陥ります。何が問題ですか?または、ファイルを分割して結合するための PHP の別のソリューションはありますか?

0 投票する
3 に答える
1484 参照

c - Linux で fseek が機能しない

重複の可能性:
stdin を指すファイル ポインターで fseek を使用する

fseekを使用して入力バッファをクリアするプログラムがあります。Windows では問題なく動作しますが、Linux では buf が失敗します。私を助けてください 。

前もって感謝します!

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

c - マルチプロセッシングを使用してCのテキストファイルから文字を1行ずつ読み取る

こんにちは、マルチプロセスプログラムで関数nullを使用してファイルの文字を読んで印刷しようとしているときに、文字の問題に直面しています。fseek()ここに私の簡単なコードがあります、

コマンドラインに入力すると./sample 10、プログラムが10文字をsample.txtに出力し、10個の子プロセスが作成され、それぞれが文字を選択して画面に出力しようとしますi。オフセットを設定するパラメーターですが、前述のようにnullを出力します。これがプログラムの見通しです。

txtファイルはこのようなものでした。

とにかく助けていただければ幸いです。

$ gcc sample.c -o sample -lpthread編集: nullを出力するようにコンパイルすることに気付きました。一方、-lpthread文字を印刷せずにコンパイルしますが、たとえば、これはテキストファイルのように適切ではありません。

ターミナルはこのような出力を提供します。

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

php - Captcha wav を作成するときの fseek、feof、および fread の PHP 警告メッセージ

現在、fseek、feof、および fread を実行しようとすると、PHP の警告メッセージ ("expects parameter 1 to be resource") が表示されます。これは、それぞれの場合にファイルが見つからないためだと思います。

少し背景を説明させてください。キャプチャ wav を作成してから、ファイルをストリーミングしています。最新のすべてのブラウザーで動作します (IE を除くが、Flash でこれをカバーしています) が、iOS では低速です。

問題は $fm 変数にあると思いますが、助けていただければ幸いです。

0 投票する
3 に答える
191 参照

c - Cとfopen_s関数を使用して、ファイルサイズは常に変化しています

私はこの基本的な機能を書きました:

これはファイルサイズを取得する関数です:

私はいつも同じパスを開き、「r」と「rb」で開くたびに異なるサイズを取得しますが、それでも同じ異なる番号を取得します..

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

c - EOF 文字の fseek

fgetc()現在、ファイル全体を読み取るために in loop を使用しています。

しかしEOF、このループの 2 回の繰り返しで検出する必要があります。をEOF使用してストリームに戻すことはできませんungetc()

使用について

EOF使用する前に入手fseekして再度読むのは安全で持ち運び可能ですか?

ありがとう。

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

c - ファイルでSEEK_CURを使用する方法*

このCコードは、ポインタを現在の位置ftell(ptr)から読み取ったばかりの構造ブロックの先頭に移動することを意味します。私は正しいですか?

私が正しい場合、ファイル内の構造ブロックの先頭に戻るSEEK_CUR代わりに使用できますか?SEEK_SET

使用方法を教えてくださいSEEK_CUR。構造ブロックの先頭に戻ります。

私はプログラミングの初心者です。だから私を助けてください。

編集:答えてくれてありがとう。私がやろうとしているのは、キーワード(学生のロール番号)を検索し、この学生の情報(名前、住所、..)を更新することです。更新されたデータは、以前のデータに正常に置き換えられます。もう1つ質問させてください。古いデータに置き換える代わりに、以前のデータの上に新しいデータを挿入する方法はありますか?

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

performance - MacOSでの奇妙なfseek()/ fwrite()のパフォーマンス

Macでのfseek()/の書き込みパフォーマンスに問題があります。fwrite()私は最大4GBのサイズの大きなファイルを操作しています。以下のテストは、わずか120MBのかなり小さなファイルで行われました。私の戦略は次のとおりです。

  • fopen()ディスク上の新しいファイル
  • ファイルをゼロで埋めます(約3秒かかります)
  • データの小さなブロックをランダムな位置に書き込みます(30.000ブロック、各4k)

全体の手順は約120秒かかります。

書き込み戦略は画像回転アルゴリズムにバインドされており(ここで私の質問を参照)、誰かが回転問題のより高速な解決策を考え出さない限り、fseek()4k以下を使用してファイルに書き込む戦略を変更することはできません。

私が観察しているのは、これです。最初の数千fseek()/fwrite()は非常に良好に機能しますが、パフォーマンスは非常に速く低下し、システムキャッシュがいっぱいになると予想されるよりも速くなります。下のグラフはfwrite()、1秒あたりの秒数と秒単位の時間の関係を示しています。ご覧のとおり、7秒後にfseek()/fwrite()レートは約に達します。1秒あたり200、プロセスの最後で1秒あたり100に達するまで下降します。

1秒あたりのfwrite()と時間

プロセスの途中(2〜3回)に、OSはファイルの内容をディスクにフラッシュすることを決定します。これは、コンソールの出力から数秒ハングしていることがわかります。ディスクへの書き込みは5MB/秒です(それほど多くはありません)。システムがファイル全体を書き込んだように見えた後fclose()、20MB/秒のディスクアクティビティが長期間表示されます。

fflush()5.000秒ごとに使用してfwrite()も、動作はまったく変わりません。どういうわけかフラッシングを強制するためにfclose()/fopen()を入れると、全体が約2倍スピードアップします。10%。

プロセスのプロファイルを作成しました(下のスクリーンショット)。事実上すべての時間が内部で費やされfwrite()ており、両方にfseek()ドリルダウンできます。__write_nocancel()

書き込み機能のプロファイリング

完全にばかげた要約

入力データがバッファに完全に収まり、書き込みプロセスをフラグメントに分割することなく、回転した出力データを線形に書き込むことができる場合を想像してみてください。書き込み関数のロジックがそのように動作するという理由だけで、私はまだfseek()ファイルポインターを配置するために使用しますが、この場合のファイルポインターは、以前と同じ位置に設定されます。パフォーマンスへの影響はないと予想されます。間違っています。

fseek()ばかげているのは、その特殊なケースの呼び出しを削除すると、関数が120秒ではなく2.7秒以内に終了することです。

さて、長い前置きの後で、質問は次のとおりです。同じ位置を探しても、なぜfseek()パフォーマンスにそのような影響を与えるのですか?どうすればそれを高速化できますか(別の戦略または他の関数呼び出し、可能であればキャッシュを無効にする、メモリマップドアクセスなど)?

参考までに、ここに私のコードがあります(整理されておらず、最適化されておらず、多くのデバッグ出力が含まれています):

システムが通話を「最適化」する方法がわからないため、少し迷っています。どんな入力でも大歓迎です。

0 投票する
3 に答える
318 参照

c - Cでファイル内の行を上書きする、奇妙な出力

ファイルを 1 行ずつ調べて (各行は 50 文字以下)、各文字を 10 または -10 ずつシフトして (暗号化および復号化するため)、シフトされた文字列を古い文字列があった場所に出力しようとしています。しかし、私は本当に面白い出力を得ています。

コードは次のとおりです。

したがって、tester.csv が最初に読み取る場合

プログラムを実行すると生成されます

0 投票する
3 に答える
9294 参照

c - fseek()を使用して、ファイルの途中にデータを挿入できますか?-C

関数fseek()を使用して、ファイル内の特定の場所にデータを出力できることを知っています。しかし、fseek()を使用してファイルの途中に移動し、データを出力するかどうか疑問に思いました。新しいデータは古いデータを上書きしますか?たとえば、123456789を含むファイルがあり、5の後にfseek()を使用してnewdataを出力した場合、ファイルには12345newdata6789が含まれるか、12345newdataが含まれます。