eingabe zerlegen und in ein array schreiben
-
hallo,
ich habe z.b. folgende eingabe: 1,2,5,5,3,8. diesen möchte ich jetzt so zerlegen, dass ich jede zahl einzeln in ein array schreiben kann, dabei soll die länge des arrays der länge meiner eingabe entsprechen (wenn ich nur 1,5 eingebe, 2 felder. wenn ich 1,4,5,6,7, dann halt 5 felder). kann mir da jemand behilflich sein? beispielcode wäre hilfreich.
gruß,
aydin77
-
wie haettest du es denn gern?
mit ner maximalen arraylaenge (einfach), oder
mit dynamischem speicher durch malloc/realloc/free (etwas komplexer) oder
mit verketteten listen (noch etwas komplexer)?willst du die kommaseparierte liste selber zerteilen oder eine vorhandene funktion benutzen, die auch nachteile hat?
-
ich glaube die einfache methode sollte ausreichen. mit welcher funktion kann die liste den zerteilen? die würde ich mir dann erstmal anschauen.
-
#include <stdio.h> #include <string.h> #include <stdlib.h> #define MAXLEN 1000 int main(void) { char puffer[MAXLEN]; int elemente[MAXLEN]; int eingabe, i, elementzahl=0; char *p, *q; puts("Liste eingeben: "); fgets(puffer, sizeof(puffer), stdin); // wieso hab ich kein gets() benutzt? p = strtok(puffer, ","); // wie funktioniert strtok()? while (p) { eingabe = strtol(p, &q, 0); // wofuer ist der zweite parameter von strtol() gut? wozu das &? wieso ist der dritte parameter null? if (p == q || elementzahl >= MAXLEN) break; elemente[elementzahl++] = eingabe; // was ist ein post-increment operator? wie verhaelt er sich? p = strtok(0, ","); } for (i = 0; i < elementzahl; ++i) printf("Element %d: %d\n", i+1, elemente[i]); return 0; }
ich geh mal davon aus, dass du den code so wie er ist als "hausaufgabe" verwendest. aber lies dir bitte die kommentare durch und informier dich.
achja, der code ist ungetestet.schau dir mal realloc() an. koennte ganz interessant fuer dich sein, wenn du nur so viel speicher verwenden willst wie noetig.
-
jep, ist hausaufgabe. aber ohne es zu verstehen würde ich es sowieso nicht verwenden, da man den code erläutern muss. vielen dank nochmal.
-
kam malloc() im unterricht schon mal dran? mit 5 aenderungen liesse sich das einbauen.
-
nein, bisher nicht.