fopen()
でファイルオープンモードに問題があります。fopen()でオープンモードを選択する方法は?
私の場合、カーソルを自由に探したいと思っていますが、EOF
を超えることもあります。さらに、既存のファイルを切り捨てるのではなく、追加することもできます。私はa+
モードでファイルを開こうとしました。しかし、カーソルを自由に探すことはできません。カーソルがEOF
を超えるたびに、指定した位置ではなく、新しい到着データがファイルの末尾に追加されます。一方、w+
モードで開いている場合、既存のファイルは切り捨てられます。この問題に対する完璧な解決法はありますか?
UPDATE:明確に指定されていません
一つのポイントは、ファイルが常に存在しないかもしれないということです。その場合は新しいファイルを作成する必要があります。
実際、構成ファイルを処理したいとします。このように実装するのがよい習慣であるかどうかはわかりません。または、まず空の構成ファイルを配置する必要があります。したがって、ケースファイルが存在しないことを気にする必要はありませんか?
は、以下のコードスニペットです:
FILE *f = fopen(FILE_PATH, "wb+");
struct record r;
if (f) {
if (fread((void *)&r, 1, sizeof(struct record), f) {
/* File exists, do the normal flow */
} else {
if (feof(f)) {
/* File is newly created, do some initialization */
}
}
} else {
/* issue a warning */
}
ここに関連コードを掲載できますか? –
私は興味があります..なぜあなたはEOFを越えて探求するか/書くことを目指していますか? – OrionRogue
@OrionRogueファイルを使用してハードディスクをエミュレートします。データはチャンクで読み書きされます。最初にファイルが空で、データが 'EOF'の後ろに来る可能性があります。 –