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
  Ein als "const" deklariertes Array übergeben Retian 5 126 08.11.2016 18:39
Letzter Beitrag: Tommy56
  String zusammensetzen Mathias 13 545 01.09.2016 21:15
Letzter Beitrag: Mathias
  String-Array füllen? torsten_156 9 445 08.07.2016 20:07
Letzter Beitrag: amithlon
  String in EEPROM Speichern BennIY 2 412 27.06.2016 10:23
Letzter Beitrag: BennIY
  Messwerte in Array speichern ArduinoMega2560 2 416 07.06.2016 16:30
Letzter Beitrag: SkobyMobil
  String - Buchstabenposition auswerten scritch 5 661 01.04.2016 16:25
Letzter Beitrag: rkuehle
  String nach UTF16 konvertieren (UTF-16) ThoEngel 0 300 20.02.2016 19:22
Letzter Beitrag: ThoEngel
  array von Php --> Arduino zu senden (ethernet) Mourti 0 441 27.01.2016 22:11
Letzter Beitrag: Mourti
  Problem mit char array Retian 12 1.001 03.01.2016 22:34
Letzter Beitrag: hotsystems
Exclamation String Zerlegen in drei Variablen Wampo 4 847 28.12.2015 01:07
Letzter Beitrag: Wampo

Gehe zu:


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