問題タブ [file-pointer]
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.
c - ファイルポインタを理解するのに苦労していますか?
以下の問題の主な説明、それが発生する場所。しかし、単純に、尋ねた後にエラーメッセージが表示される理由がわかりません
outf は、既存のファイルへのファイル ポインタです。コードの途中で説明を読んでください。
ここまではすべて正常に動作します。次に、outf ファイルが既に存在するかどうかを調べます。outf が既存のファイルを指している場合、「出力ファイルは既に存在します。上書きします (y/n):」と出力します。
ただし、これを印刷するとすぐに、エラーウィンドウが開きます! これはおそらく非常に初歩的な間違いです。私はまだ C を学んでいます。そのようなファイルがない場合、プログラムは正常に完了し、if ステートメントをバイパスします。
c - プログラムは scanf("%c",&yn); でユーザー入力を待ちません。
これは、C でファイルを使用して練習するために書いているプログラムの基本的なコードです。出力ファイルが既に存在するかどうかを検出しようとしています。存在する場合は、ユーザーに上書きするかどうかを尋ねたいと思います。これが、最初に outfilename ファイルを fopen(outfilename,"r"); で開いた理由です。fopen(outfilename,"w"); とは対照的です。
ファイルが存在しない場合を検出しますが、存在する場合は printf("Output file already exists, overwrite (y/n):"); を実行します。ステートメントですが、scanf("%c",&yn); を完全に無視します。声明!
プログラムの最後のprintfは、ファイルが存在しない場合は「yn = 0」を読み取り、存在する場合は単に「yn =」を読み取ります。誰でも私を助けることができますか?
c - C でファイル ポインタからファイル名を取得する
Cのファイルポインタからfile_nameを見つける方法はありますか?
fpから、自分が開いたファイル名を取得することはできますか?
c - C の pthread での競合状態
私は C で pthreads を初めて使用し、複数のファイル内の単語を並行して検索する単純なプログラムを作成しています。ただし、複数のファイルを入力するたびに出力が変化し、コードで修正していない競合状態があることを示唆しています。修正を手伝っていただけますか?
次のスニペットはメインで、pthreads を作成します。
各スレッドが呼び出す関数:
以下は、ファイル内の単語を検索するためのコードです)
明確にするために、問題は、プログラムを連続して実行すると異なる結果が得られることです。呼び出し $programname file1 file2 は、直後に呼び出された同じ呼び出しとは異なる結果を出力します。ただし、プログラムは 1 つのファイルのみが渡された場合に機能することに注意してください。
どんな助けでも大歓迎です。
c++ - ファイルC++からレコードを削除します
.datファイルのレコードを追加、編集、および削除するためのC++の単純なデータベースコンソールアプリケーションに取り組んでいます。追加と変更がありますが、このシナリオでの削除の概念を理解するのが難しいと感じています。以下は私がレコードを書く方法です。
レコードを書く
write()
私の代わりに...と同等のものをどのように持つことができるのdelete()
か、それともそれほど単純ではないのですか?
c++ - classFile_pointer-これは良いc++ですか?
私のC++プログラムは、多くのファイルポインターを使用し、多くのreturnステートメントを持っています。
開いているすべてのファイルポインタを閉じずにreturnステートメントに到達しないようにするために、returnステートメントに到達すると、すべてのオブジェクトのデストラクタが自動的に呼び出されることが保証されているという前提に基づいて、このクラスを作成しました。
私の仮定は本当ですか?
そして、それは良いコードですか?
File_pointer.cppのコンストラクタとデストラクタ
実装例
c - ファイル ポインタ/ディスクリプタの保存/複製
グローバル FILE
ポインター/ディスクリプターが必要です。関数の 1 つは、このポインター/記述子から読み取ります。ポインター/記述子に関連付けられた内部ポインターFILE
が進みます。この関数が戻った後、同じポインター/記述子から読み取り、他の関数が読み取ったのと同じデータを読み取りたいと考えています。FILE
しかし、内部ポインターが進んでいるため、まったく同じデータを読み取ることはできません。複製はオリジナルを反映するため、記述子の複製は機能しません。読み取り前にポインターを保存してFILE
も、それはポインターであるため機能せず、再び同じものを参照し始めます。
1 つの代替方法は、読み取り前に使用してファイル位置を保存し、次の読み取りの前にfgetpos()
使用することです。fsetpos()
ただし、これは記述子ではなくファイルポインターに対して機能します。
通常のポインターを使用すると、とても簡単です。FILE
しかし、ポインターを使用すると事態が難しくなります。
これを達成するための他の不器用な方法はありますか?
c - fread 関数の使用: 読み取るサイズが読み取り可能なサイズよりも大きい
質問があります:
fread を使用してファイルを読み取っています。
ループを使用してこの呼び出しを連続して呼び出し、ファイル全体を読み取らせます。
ファイルの終わり近くに来て、"size" * sizeof (Reg) を読み取れない場合、またはこの量の半分しか読み取ることができない場合、配列 A はどうなりますか。完了?関数はエラーを返しますか?
ファイルがフレッドスルーによってどのように読み取られたかを知っていますか?
Edi1:正確に、分割が正確でない場合、ファイルにないものを読み取る最後の少し小さいファイル サイズを読み取るときに、読み取り可能なバイト数にベクトルのサイズを変更することを考えています。またはより良いダイナミクスを開発します。
c++ - ファイル ポインターが開いているかどうかを確認し、C++ で削除します。
同様の問題に関して以前に回答されたいくつかの質問を読みましたが、どうすればよいかまだはっきりしていません。これはシナリオです:
いくつかの一時ファイルを削除する必要がありますが、削除されません。デバッグ中に、ファイルを手動で削除しようとしても削除されないことに気付きました。したがって、一部のファイルポインターが閉じられていないにもかかわらず、ファイルを削除できないと結論付けました。
しかし、これらのファイル ポインターは、私がアクセスできないコードの一部で使用されています。これにより、ファイルポインターが開いているかどうかを確認して削除するという解決策が1つしかありません(おそらく)。
または、状況を処理する他の方法はありますか??