Dynamischen C String unterteilen und verkleinern
Hallo Zusammen,
ich bin gerade mit einer Aufgabe betreut, ein "quasi" FAT Dateisystem nachzubauen. Das Programm erstellt unteranderem einen Container und eine Text Datei für die Organisation des Containers. Die Blockgröße bzw. Sektorgröße und Anzahl der Blöcke / Sektoren kann der Benutzer frei wählen.
Zu meinem eigentlichen Problem. Ich habe den kompletten Inhalt der zu kopierenden Datei in einem dynamischen Array (malloc) abgelegt. Jetzt muss diese Datei unterteilt im Container abgelegt werden. D.h. es müssen z.B. mehrere 1024 Byte von der Datei irgendwo verstreut im Container liegen. Ist es nun möglich, diese 1024 "Zeichen" aus dem Buffer zu ziehen, den restlichen Inhalt an die erste Stelle des Buffers zu verschieben und diesen wieder zu verkleinern?
Viele Grüße
Xearo
ich bin gerade mit einer Aufgabe betreut, ein "quasi" FAT Dateisystem nachzubauen. Das Programm erstellt unteranderem einen Container und eine Text Datei für die Organisation des Containers. Die Blockgröße bzw. Sektorgröße und Anzahl der Blöcke / Sektoren kann der Benutzer frei wählen.
Zu meinem eigentlichen Problem. Ich habe den kompletten Inhalt der zu kopierenden Datei in einem dynamischen Array (malloc) abgelegt. Jetzt muss diese Datei unterteilt im Container abgelegt werden. D.h. es müssen z.B. mehrere 1024 Byte von der Datei irgendwo verstreut im Container liegen. Ist es nun möglich, diese 1024 "Zeichen" aus dem Buffer zu ziehen, den restlichen Inhalt an die erste Stelle des Buffers zu verschieben und diesen wieder zu verkleinern?
Viele Grüße
Xearo
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 210697
Url: https://administrator.de/contentid/210697
Ausgedruckt am: 21.11.2024 um 21:11 Uhr
4 Kommentare
Neuester Kommentar
Hallo LordXearo,
habe nicht ganz verstanden, was letztlich dabei raus kommen soll. Aber vielleicht ein Ansatz:
malloc() gibt einen Pointer (sagen wir void *p1) auf Byte 0 des reservierten Speiches zurück. Also die Adresse. Du könntest nun per malloc() einen weiteren Speicherbereich von 1024 Byte reservieren und per memcpy() die ersten 1024 Byte herauskopieren. Einem Hilfspointer (void *p2) übergibst du die Adresse p1 + 1024. Wieder 1024 Byte kopieren etc.
Am Ende p1 freigeben und gut.
Grüße
rubberman
habe nicht ganz verstanden, was letztlich dabei raus kommen soll. Aber vielleicht ein Ansatz:
malloc() gibt einen Pointer (sagen wir void *p1) auf Byte 0 des reservierten Speiches zurück. Also die Adresse. Du könntest nun per malloc() einen weiteren Speicherbereich von 1024 Byte reservieren und per memcpy() die ersten 1024 Byte herauskopieren. Einem Hilfspointer (void *p2) übergibst du die Adresse p1 + 1024. Wieder 1024 Byte kopieren etc.
Am Ende p1 freigeben und gut.
Grüße
rubberman
Hallo LordXearo.
Grüße
rubberman
es gibt ja die Funktion strncpy.
Kommt darauf an welchen Inhalt deine Dateien haben. Es wird nur bis zum ersten Auftreten eines Nullzeichens kopiert und der Rest mit Nullzeichen aufgefüllt. Dateien mit unbestimmtem Inhalt (Binärdateien bspw.) kannst du so nicht verarbeiten. Darum dachte ich eher an memcpy.Es müsste wohl gehen, wenn ich bei "Source destination" einfach die Stelle mit "+" verschiebe
Bei Source sicher. Aber wieso bei Destination?Grüße
rubberman