Array splitten

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
knuppel
Beiträge: 1
Registriert: Fr Mai 01, 2015 2:31 pm

Array splitten

Beitrag von knuppel » Fr Mai 01, 2015 2:37 pm

Hallo, ich habe eine INT Array der sieht in etwa so aus device []= "45,46,34,23,45,12,59,65,43,45,32,56,53,56,66,59"

Nun soll alles was bis zur ersten 59 geht in einen neuen Array ip[]="45,46,34,23,45,12"
Alles was danach bis zur nächsten 59 kommt in einen neuen Array port[]="65,43,45,32,56,53"
und alles was danach kommt bis zur nächsten 59 in einen neuen Array id[]="66].

Wie mache ich das am besten mit C.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Array splitten

Beitrag von Xin » Fr Mai 01, 2015 9:24 pm

knuppel hat geschrieben:Hallo, ich habe eine INT Array der sieht in etwa so aus device []= "45,46,34,23,45,12,59,65,43,45,32,56,53,56,66,59"
Mit den Anführungszeichen ist das definitiv kein int-Array.
knuppel hat geschrieben:Nun soll alles was bis zur ersten 59 geht in einen neuen Array ip[]="45,46,34,23,45,12"
Alles was danach bis zur nächsten 59 kommt in einen neuen Array port[]="65,43,45,32,56,53"
und alles was danach kommt bis zur nächsten 59 in einen neuen Array id[]="66].

Wie mache ich das am besten mit C.
Nun erstmal müssen wir uns entscheiden, ob wir ein Int-Array haben

Code: Alles auswählen

int ip[]={45,46,34,23,45,12,59,65,43,45,32,56,53,56,66,59;}
oder ein char Array wegen der Anführungszeichen.
Wegen der "ip" wie Integer-Pointer gehe ich mal von ints aus.

Nun zunächst musst Du ausgehend von Deiner Startposition im Duellarray, die 59 finden (sofern vorhanden). Damit hast Du den Bereich und die Länge des Bereiches von Deiner Startposition und der 59. Du nimmst Dir ein neues Array in der bekannten Länge und kopierst dieses. Anschließend verschiebst Du Deine Startposition hinter die 59 und wiederholst das ganze.
So bekommst Du immer neue Arrays, die Du zum Beispiel in einem Array für Integer-Pointer-Pointer speichern kannst:

Code: Alles auswählen

int * ipp[100]; // wir erwarten einfach nur maximal 100 Unterarrays
Versuch Dich erstmal daran, die Positionen der '59' in Deinem Array zu finden.

Ein Splitten in der Form, dass das Array in etwas anderes "verarbeitet" wird, gibt es in C nicht. Der Speicherplatz in dem Dein Array steht, muss solange unverändert bleiben, bis die Einzelteile irgendwo anders existieren, also kopiert wurden.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten