Fasko
Lt. Junior Grade
- Registriert
- Jan. 2011
- Beiträge
- 478
Hi,
momentan sitze ich an einer Aufgabe dran, zu der strtok gehört.
Bzw. ich versuche die Musterlösung zu verstehen(siehe Kommentare und Zwischenausgabe).
Wie genau arbeitet der folgende Punkt innerhalb der while-Schleife.
// naechsten Abschnitt erstellen
ptr = strtok(NULL, delimiter);
Ich verstehe nicht, warum er jeweils einen Schritt weiter geht mit seiner Ausgabe.
Was genau passiert an dieser Stelle?
Gruß
Fasko
Code:
Ausgabe:
Ausgabe PTR nach der Definition: Paris 111
Abschnitt gefunden: Paris 111
Zahl: 111
Ausgabe PTR: Berlin 6
Abschnitt gefunden: Berlin 6
Zahl: 6
Ausgabe PTR: London 16
Abschnitt gefunden: London 16
Zahl: 16
Ausgabe PTR: Rom 28
Abschnitt gefunden: Rom 28
Zahl: 28
Ausgabe PTR: (null)
Die Summe lautet: 161
Program ended with exit code: 0
momentan sitze ich an einer Aufgabe dran, zu der strtok gehört.
Bzw. ich versuche die Musterlösung zu verstehen(siehe Kommentare und Zwischenausgabe).
Wie genau arbeitet der folgende Punkt innerhalb der while-Schleife.
// naechsten Abschnitt erstellen
ptr = strtok(NULL, delimiter);
Ich verstehe nicht, warum er jeweils einen Schritt weiter geht mit seiner Ausgabe.
Was genau passiert an dieser Stelle?
Gruß
Fasko
Code:
Code:
//
// main.c
// Aufgabe-08.07
//
//
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char string[] = "Paris 111,Berlin 6,London 16,Rom 28";
char delimiter[] = ",";
char *ptr;
char spanset[] = "1234567890"; // später für strcpn notwendig
int sum = 0;
// initialisieren und ersten Abschnitt erstellen
ptr = strtok(string, delimiter);
printf("Ausgabe PTR nach der Definition: %s\n", ptr);
// Start While Schleife
while(ptr != NULL) {
printf("Abschnitt gefunden: %s\n", ptr);
// strspn ermittelt die Länge der Zeichen in einem String, bis zum gesuchten Zeichen.
int len = strcspn(ptr, spanset);
ptr+=len;
//ptr = strrchr(ptr, ' ');
//ptr++;
printf("Zahl: %s\n", ptr);
sum+= atoi(ptr);
// naechsten Abschnitt erstellen
ptr = strtok(NULL, delimiter);
printf("Ausgabe PTR: %s\n", ptr);
} // Ende While Schleife
printf("Die Summe lautet: %i\n", sum);
return 0;
}
Ausgabe:
Ausgabe PTR nach der Definition: Paris 111
Abschnitt gefunden: Paris 111
Zahl: 111
Ausgabe PTR: Berlin 6
Abschnitt gefunden: Berlin 6
Zahl: 6
Ausgabe PTR: London 16
Abschnitt gefunden: London 16
Zahl: 16
Ausgabe PTR: Rom 28
Abschnitt gefunden: Rom 28
Zahl: 28
Ausgabe PTR: (null)
Die Summe lautet: 161
Program ended with exit code: 0