String (CSV) zerlegen und in Array speichern mit AVR GCC

Gast #1383428
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?
Gast #1389189
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);
}
Gast #1389215
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.
Gast #1389444
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren