Gibt es eine Funktion in C ++, die eine .bin-Datei erstellt, oder ist dieser Code etwas fehlt?

StackOverflow https://stackoverflow.com/questions/908555

  •  05-09-2019
  •  | 
  •  

Frage

Ich habe einen Code, der wie folgt aussieht:

int main () {
  fstream file;
  file.open("test.bin", ios::out | ios::binary);
  if(!file.is_open())
  {
      return -1;
  }
  int n = 3;
  file.write(reinterpret_cast<char*>(&n), sizeof(n));
  file.close();
  return 0;
}

, wenn ich es alleine laufen, verlässt es mit -1, so offensichtlich gescheitert, es zu öffnen „test.bin“. Allerdings, wenn ich eine leere Editor-Datei als „test.bin“ speichern und starten Sie es, es funktioniert gut. Was ich frage mich, wie ich mein C bekommen kann ++ Programm automatisch eine leere Datei „test.bin“ zu erzeugen, wenn eine Datei mit dem Namen „test.bin“ noch nicht vorhanden ist.

War es hilfreich?

Lösung

Ihr Code-Snippet ist falsch, da es in eine Datei zu schreiben versucht, die Sie für die Eingabe geöffnet haben. Wenn Sie auf die Datei schreiben wollen, verwenden Sie einfach ios::out statt ios::in.

Wenn Sie die Datei zum Lesen öffnen wollen, aber schaffen es, wenn es nicht vorhanden ist, können Sie:

file.open("test.bin", ios::in | ios::binary);
if(!file.is_open()) {
    file.open("test.bin", ios::out | ios::binary);
    int n = 3;
    file.write(reinterpret_cast<char*>(&n), sizeof(n));
    file.close();
    file.open("test.bin", ios::in | ios::binary);
    if(!file.is_open()) {
        return -1;
    }
}

Dadurch wird die Datei mit der ganzen Zahl 3 als Standardinhalt initialisieren, wenn es nicht bereits vorhanden ist.

Wenn es nicht vorhanden ist, wird es den Inhalt in Ruhe lassen. In jedem Fall werden Sie die Datei auf dem ersten Byte geöffnet haben.

Andere Tipps

Ich würde annehmen, dass Sie könnte wahrscheinlich tun es einfach durch Öffnen und Schließen einer Datei:

if (GetFileAttributes("test.bin") == INVALID_FILE_ATTRIBUTES)
{
    fstream file;
    file.open("test.bin", ios::out);
    file.close();
}

Eine Option ist für Lese zu öffnen / schreiben und an den Anfang der Datei suchen.

Dann können Sie lesen, schreiben oder tun, was Sie wollen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top