Leere Datei (nur Nullen) mit festlegbarer Grösse erzeugen



  • Und warum nicht einfach man: dd nehmen?
    Ich verstehe diesen Drang, immer alles selbst schreiben zu wollen irgendwie echt nicht gut. 🙄



  • nman schrieb:

    Ich verstehe diesen Drang, immer alles selbst schreiben zu wollen irgendwie echt nicht gut. 🙄

    Ich schon.
    Denn nicht selten handelt es sich nur um Teilprobleme, die zudem noch oftmals wiederkehren. Und da ist es doch schön, wenn man schon auf eigene Erfahrung zurückgreifen kann.



  • SeppSchrot schrieb:

    Denn nicht selten handelt es sich nur um Teilprobleme, die zudem noch oftmals wiederkehren. Und da ist es doch schön, wenn man schon auf eigene Erfahrung zurückgreifen kann.

    Klar, darum ist sowas ja auch ganz besonders süß für Übungsprogramme, da freut sich jeder darüber.
    Aber wenn ich eine fertige Lösung brauche, kombiniere ich lieber 2 Tools die X und Y machen zu XY, als mir XY neu zu schreiben.



  • Vielen Dank für Eure Antworten!

    dd habe ich jetzt erst durch Deine Antwort kennengelernt.

    Wie gesagt, ich bin Novize. Ist einer von Euch evtl. so freundlich - natürlich nur, wenn das nicht viel Umstand bereitet (weiss ich ja nicht) - ein paar Schnipsel Code zur Verfügung zu stellen?

    Danke

    Johannes



  • Unix:
    Datei mit 256 Bytes (mit lauter Nullen gefüllt) erstellen:

    dd if=/dev/zero of=test.txt bs=256 count=1
    


  • Hallo nman,

    gibt es dd denn auch für Windosen? Wo kann ich es finden?

    Antwort würde mich freuen

    Johannes



  • Hallo,

    es gibt auf jeden Fall die Möglichkeit, eine Linux Umgebung mit Cygwin zu emulieren:
    http://www.cygwin.com/

    Dort hast du die Möglichkeit jegliche Linux Kommandos zu nutzen. Ist vielleicht auch für die Zukunft ein nettes Feature.

    Ansonsten hier:
    http://uranus.it.swin.edu.au/~jn/linux/rawwrite/dd.htm



  • Und falls du´s doch selber schreiben willst:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc, char *argv[ ]) 
    { 
      FILE *Datei;
      unsigned int i, Anzahl;
    
      if (argc < 3) return -1; //Kein Parameter
      Anzahl = atoi(argv[2]);
      if (!Anzahl) return -1; //0 Byte oder keine Zahl 
    
      Datei = fopen(argv[1],"w+b");
      if (!Datei) return -1; //Konnte Datei nicht öffnen
    
      for (i=0; i<Anzahl; i++)
      {
        unsigned char Wert = rand()%256;	
        fwrite(&Wert, 1, 1, Datei); 
      } 	
    
      //Alles klar
      return 0;
    }
    

    Ist zwar "nur" C, aber was solls 😉



  • Hallo SeppSchrot,

    vielen Dank für Deinen Code. 🙂

    Ich habe ihn zwar mit Dev-C++ erfolgreich kompilieren können, aber es erfolgt bei Ausführung leider keine Erstellung einer Datei. 😞

    Wahrscheinlich bin ich einfach zu unbeholfen, ist mir das Programmieren noch zu fremd.

    Oder habe ich etwas komplett missverstanden?

    Lieber Gruss

    Johannes



  • Hast du das kompilierte Programm denn mit Parametern aufgerufen??? Ansonsten bricht es einfach ohne Fehlermeldung (kein guter Stil) ab.



  • Nochmal hallo Sepp

    und vielen Dank. 🙂

    Es funktioniert. Jetzt versuche ich mal, mich mit dem Code anzufreunden. 😉

    Schönen Tag

    Johannes


Anmelden zum Antworten