String zerlegen

touristguy

Mitglied
Hallo,
ich bräuchte etwas Hilfe beim Zerlegen eines Strings in C. Und zwar möchte ich die Positionsangaben einer GPS Maus in seine einzelnen Werte zerlegen. Der dabei über eine serielle Schnittstelle Empfangene String sieht so aus:

$GPGGA,191410,4735.5634,N,00739.3538,E,1,04,4.4,351.5,M,48.0,M,,*45

Alle Nutzdaten werden durch ein Komma getrennt, so gibt Beispielsweise die Zahl nach dem ersten Komma die Uhrzeit, die Nächste den Breitengrad ... (Falls es jemand interessiert, hier steht alles zu dem Format: NMEA 0183).
Jetzt möchte ich gerne alle Werte aus diesem String auslesen, dabei werden wie bereits erwähnt die Werte von einem Komma links und einem Komma rechts getrennt. Ich habe schon eine halb funktionierende Lösung, bei der ich einfach den Zeiger im String immer von einem Komma bis zum nächsten verschiebe und dann die Werte von der Adresse des ersten Kommas bis zur Adresse des zweiten Kommas kopiere. Gibt es da vielleicht eine etwas elegantere Lösung? Eventuell eine Funktion in einer Standarbibliothek?
Vielen Dank.

Gruß Phil
 
Moin,

muss es unbedingt C sein oder geht auch C++ ?

Sonst fallen mir spontan die Stichwörter "reguläreAusdrück", "Splitten" (nach ',') etc. ein ...
Ich kann aber so aus dem Stand nicht sagen, was es davon an C-LIBs gibt ... ;)

Oder Du durchläufst den String zeichenweise und trennst von Hand bei jedem Komma !

Gruß
Klaus
 
Ja leider muss es in C sein, weil ich das Programm auf einem Mikrocontroller laufen habe. Also bisher durchlaufe ich den String von Anfang bis Ende Zeichenweise und merke mir die Stellen an denen die Kommas sind. Gibt es da nicht vielleicht eine Funktion, mit der ich den String nach Kommas durchsuchen kann?
Hier mal meine Funktion mit der ich das zur Zeit erledige:
Code:
unsigned char GPS_seperate(unsigned char* GPS)
{
	unsigned char i = 1;	

	while(GPS[i] != ',')
	{
		if(GPS[i] == '\0')
			break;
		i++;
	}

	return (i-1);

}

Gruß Phil
 
Zurück