Forum: Mikrocontroller und Digitale Elektronik String (CSV) zerlegen und in Array speichern mit AVR GCC


von Jacke (Gast)


Lesenswert?

Hallo Alle,

ich bin Anfänger und habe in der Suche auch nichts passendes gefunden.

Ich möchte die durch Kommas getrennten Werte eines Strings char 
STRING=1,2,3,4,5
in ein Array speichern int ARRAY[6]={1,2,3,4,5}

Ich habe schon einiges mit den Stringfunktionen getestet komme aber 
nicht recht voran, könnt ihr mir bitte helfen?

von Jörg G. (joergderxte)


Lesenswert?

Bei den Stringfunktionen tauchte weder strtok (bzw. strtok_r) noch 
strtol (bzw. atoi) auf ?
scnr, Jörg

von Jacke (Gast)


Lesenswert?

Ja danke,

habe es nun mit strtok realisiert.

von Link zu (Gast)


Lesenswert?

> habe es nun mit strtok realisiert.
<Glaskugel-Modus>
Dann verbockst du da was!
</Glaskugel-Modus>

von Myjestic (Gast)


Lesenswert?

Also die Antworten sind ja echt hilfreich!

char * tok = strtok(pos, ",");
i = 0;
int Achsenarray_okay = 0;
for (i=0;i<=11;i++)
{
Achsenarray[i] = atoi(tok);
tok = strtok(NULL,",");
itoa(Achsenarray[i], string_temp, 10);
}

von Philipp (Gast)


Lesenswert?

Ist es nicht einfacher, den String nach "," zu durchsuchen und jedesmal 
das Komma durch ein 0 zu ersetzen und den Anfang als char* in einem 
Array zu speichern. Jeder Eintrag im Char-Array ist ein Pointer auf den 
Teilstring.

von GundelGaukeley (Gast)


Lesenswert?

Eine möglichkeit währe

#include <stdio.h>

struct split
{
  char *pointers[256];
  int count;
};

struct split split (char *in, char delim)
{
  struct split sp;
  sp.count = 1;
  sp.pointers[0] = in;

  while (*++in)
  {
    if (*in == delim)
    {
      *in = 0;
      sp.pointers[sp.count++] = in+1;
    }
  }

  return sp;
}

Gruß

GundelGaukeley

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.