GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie fügt man an eine Datei in C an, indem man Open in O_APPEND Mode unter Linux verwendet?

Nun, ich habe gerade Ihr Programm ausprobiert und habe eine Vorstellung davon, was schief läuft.

Grundsätzlich funktioniert es, aber mit einem Fehler. Wenn Sie zum ersten Mal "thy fall" in die Datei schreiben, verwenden Sie einen char Array von 4096 Bytes, und Sie schreiben das gesamte Array in die Datei. Das heißt, Sie schreiben „thy fall“ gefolgt von 4088 Zeichen des zufälligen Nichts. Später, wenn Sie anhängen, hängen Sie ab der 4097. Position an. Dies ist wahrscheinlich nicht das, was Sie beabsichtigt haben.

Wenn Sie einfach cat In der Datei, die Sie erstellen, sehen Sie die erwartete Ausgabe "thy fall, dude". Aber wenn Sie es vollständig in Ihrem Code lesen, lesen Sie nur 4096 Figuren. Daher wird der ", dude"-Teil nie gelesen, weshalb Ihr Programm ihn nie ausgibt.

Meine Lösung, Sie müssen Ihre Array-Größe ändern. Und lesen Sie beim Lesen Teile von beispielsweise 100 oder 1000 ein, bis Sie EOF (read) erreichen gibt -1 zurück).


Die Anzahl der Bytes, die Sie zu schreiben versuchen, ist nicht korrekt,

char buf[BUFFSIZE] = {'t', 'h', 'y', ' ', 'f', 'a', 'l', 'l'};
size_t n = sizeof(buf);
if(write (fd, buf, n) < 0){

stattdessen sollten Sie dies tun

char buf[BUFFSIZE] = {'t', 'h', 'y', ' ', 'f', 'a', 'l', 'l', '\0'};
size_t n = strlen(buf); //use strlen 
if(write (fd, buf, n) < 0){

Führen Sie dies in ähnlicher Weise auch für andere Schreib- und Lesevorgänge durch. Wenn Sie nicht '\0' schreiben in der Datei zum Beenden der Zeichenfolge, erhalten Sie sie nicht, wenn Sie Daten aus der Datei lesen.

Während des Lesens sollten Sie versuchen, bis die gesamte Datei gelesen ist, dh. Sie erhalten EOF .


Es gibt nur einen kleinen Fehler, Sie müssen den sizeof ändern Funktion zu strlen weil die sizeof Die Funktion gibt die Größe des Arrays zurück, aber den strlen Funktion gibt nur die Länge der im Array gespeicherten Zeichenfolge zurück!


Linux
  1. So fügen Sie unter Linux Text an das Dateiende an

  2. So schreiben Sie mit dem Linux-Befehl Text auf ein Bild

  3. So fügen Sie unter Linux einfach Text an das Dateiende an

  4. So teilen Sie ISO oder Datei mit dem Befehl „Split“ in Linux

  5. So öffnen Sie eine Datei in vim mit Pipe

So teilen Sie Dateien lokal unter Linux mit NitroShare

So erstellen Sie einen symbolischen Link in Linux mit dem Ln-Befehl

So überwachen Sie Dateiänderungen mit fswatch unter Linux

So öffnen Sie eine Datei unter Linux

So schreiben Sie Daten in eine Datei unter Linux

So ändern Sie das Limit für offene Dateien in Linux