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
  String nach Byte Array in ASCII-Codierung nexus1212 7 430 05.11.2017 14:36
Letzter Beitrag: Tommy56
  char-Array nach int? torsten_156 8 535 04.11.2017 18:44
Letzter Beitrag: Tommy56
  3 Stück LED 8x8 Matrix via Array ansteuern Bino87 10 893 30.10.2017 19:33
Letzter Beitrag: Bino87
  pinMode mit array luj1990 6 812 22.07.2017 10:24
Letzter Beitrag: Binary1
  String vergleichen georg01 15 1.141 18.07.2017 20:35
Letzter Beitrag: Tommy56
  String.charAt() ardun 3 426 02.07.2017 15:28
Letzter Beitrag: Tommy56
  Aus char string machen metzgefa 1 516 06.05.2017 15:15
Letzter Beitrag: Tommy56
  Array-Index zu groß: Tückisches Verhalten GuaAck 6 474 05.05.2017 22:03
Letzter Beitrag: Tommy56
  Array mit Serial.read befüllen Gonmaus 4 613 01.05.2017 09:13
Letzter Beitrag: Gonmaus
  String übergeben oOSpikeOo 9 942 28.03.2017 19:47
Letzter Beitrag: georg01

Gehe zu:


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