INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
String in Array zerlegen
06.07.2015, 20:09 (Dieser Beitrag wurde zuletzt bearbeitet: 06.07.2015 20:10 von tito-t.)
Beitrag #9
RE: String in Array zerlegen
ich sehe keine Speicher-Reservierung für deine string-Variablen, ich hätte Sorge, dass sie ins Nirwana schreiben. Ich würde sie vorab mit Größe definieren:
char te[20], tz[20], td[20] /*,....*/ ; // usw.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.07.2015, 20:19
Beitrag #10
RE: String in Array zerlegen
(06.07.2015 20:09)tito-t schrieb:  ich sehe keine Speicher-Reservierung für deine string-Variablen, ich hätte Sorge, dass sie ins Nirwana schreiben. Ich würde sie vorab mit Größe definieren:
char te[20], tz[20], td[20] /*,....*/ ; // usw.
Ich glaube, dass man das nicht muss. Die Zuweisungen zu te, tz etc. kopieren eh nur die Zeiger. Also würde es nichts nützen. Ich denke, strtok "zerhackt" den String (value) selbst. Versuche mal, danach value auszugeben.

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.07.2015, 22:31 (Dieser Beitrag wurde zuletzt bearbeitet: 06.07.2015 22:43 von tito-t.)
Beitrag #11
RE: String in Array zerlegen
ja, ich dachte auch, dass der Ausgangsstring value zerhackt wird.
Aber wo stehen dann die Hackstücke 'token' ? Die habe doch auch keinen reservierten Speicher?

char* token = strtok(value, ",");
char* te = token;
was doch nichts anderes ist als
char te[] = token;

auf die tokens werden dann die neuen Zeiger gesetzt, aber dann werden die Tokens ja sofort wieder überschrieben,
token= strtok(0, ",");
char* tz = token;

wo stehen dann also die Teilstrings?
Aber was überhaupt bedeutet die Null in token= strtok(0, ","); ?

Ehrlich gesagt, doch noch ne Menge Fragen. Huh

gerade sah ich bei c++Reference: die Null ist der Nullpointer!
Code:
char str[] ="- This, a sample string.";
  char * pch;
  printf ("Splitting string \"%s\" into tokens:\n",str);
  pch = strtok (str," ,.-");
  while (pch != NULL)
  {
    printf ("%s\n",pch);
    pch = strtok (NULL, " ,.-");
  }
sieht aus, als bliebe der Ausgangsstring stehen wo er ist und wird gar nicht echt zerhackt, sondern es werden nur nacheinander Pointer auf bestimmte Zellen dieses Strings gesetzt, dann wird es ein wenig klarer!
Aber warum ein Nullpointer? hm.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.07.2015, 09:51
Beitrag #12
RE: String in Array zerlegen
(06.07.2015 22:31)tito-t schrieb:  ja, ich dachte auch, dass der Ausgangsstring value zerhackt wird.
Aber wo stehen dann die Hackstücke 'token' ? Die habe doch auch keinen reservierten Speicher?
Die stehen genau da, wo sie vorher auch standen. strtok ändert den ursprünglichen String. D.h. am Anfang hatten wir das hier:
"Hallo, mein, Name, ist, Louis\0"
Nach dem strtok steht an derselben Speicherstelle in etwa das hier:
"Hallo\0 mein\0 Name\0 ist\0 Louis\0"
(\0 steht jeweils für ein Byte mit dem Wert 0.)
...und die Zeiger te, tz usw. zeigen jeweils in diesen String.

Zitat:auf die tokens werden dann die neuen Zeiger gesetzt, aber dann werden die Tokens ja sofort wieder überschrieben,
token= strtok(0, ",");
char* tz = token;
Da wird gar nichts überschrieben, da ja nur die Zeiger kopiert werden und nicht die Inhalte.

Zitat:wo stehen dann also die Teilstrings?
Da, wo sie vorher auch standen.

Zitat:Aber was überhaupt bedeutet die Null in token= strtok(0, ","); ?
Das bedeutet soviel wie "mach mit dem String vom Anfang weiter, und zwar an der Stelle, wo wir das letzte mal waren. strtok verwendet dazu einfach eine static-Variable.

Zitat:Aber warum ein Nullpointer? hm.
Siehe oben. Ansonsten würde das Teil sozusagen wieder von vorne anfangen, aber da steht ja dann nur der String bis zum ersten Trennzeichen. (Da das erste Trennzeichen schon durch \0 ersetzt wurde.

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.07.2015, 12:28
Beitrag #13
RE: String in Array zerlegen
aha! deshalb! danke!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Aus char string machen metzgefa 1 135 06.05.2017 15:15
Letzter Beitrag: Tommy56
  Array-Index zu groß: Tückisches Verhalten GuaAck 6 180 05.05.2017 22:03
Letzter Beitrag: Tommy56
  Array mit Serial.read befüllen Gonmaus 4 282 01.05.2017 09:13
Letzter Beitrag: Gonmaus
  String übergeben oOSpikeOo 9 313 28.03.2017 19:47
Letzter Beitrag: georg01
  Array länge oOSpikeOo 4 159 28.03.2017 18:57
Letzter Beitrag: oOSpikeOo
  String in tinygps++ einlesen hoko 17 659 07.03.2017 15:40
Letzter Beitrag: hoko
  String -> Char *gelöst* Binatone 2 334 31.01.2017 11:08
Letzter Beitrag: Binatone
  ascii string to int array konvertieren renid55 3 383 29.12.2016 11:49
Letzter Beitrag: Tommy56
  String / HTTP Request Marc2014 4 438 23.12.2016 15:42
Letzter Beitrag: Tommy56
  Ein als "const" deklariertes Array übergeben Retian 5 303 08.11.2016 18:39
Letzter Beitrag: Tommy56

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste