www.mikrocontroller.net

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


Autor: Jacke (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Jörg G. (joergderxte)
Datum:

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

Autor: Jacke (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja danke,

habe es nun mit strtok realisiert.

Autor: Link zu (Gast)
Datum:

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

Autor: Myjestic (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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);
}

Autor: Philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: GundelGaukeley (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.