Hallo,
mittels folgender Funktion lasse ich mir eine Zeichenkette einlesen:
Die Zeichenkette soll die Form {X,XX,X} haben, fuer X nur ganze Zahlen. Das funktioniert auch wunderbar fuer X<10. Fuer X>=10 tritt das Problem auf, dass zwar, z.B. fuer {123, 6, 8} die einstelligen Zahlen normal eingelesen werden. Fuer die 123 aber passiert folgendes: In list[0] steht 123, in list[1] 23 und in list[2] 3.
Ich kann mir denken, dass es daran liegt, dass atoi alle Zeichen in einen Integer umwandelt die ab Adresse p stehen, fuer alle Zeichen, fuer die das moeglich ist. Es beginnt also bei Adresse von 1, ist kein Problem, also weiter 2 und 3 ist auch kein Thema und dann steht da ein Komma in Ascii und es bricht ab. In list[0] wird also 123 geschrieben. Es wird anschliessend der Pointer um eins erhoeht und wir starten bei 2, dass gleiche Spiel von vorn.
Muss ich als Loesung die Stelligkeit jeder einzelnen Zahl in list berechnen und dementsprechend dann den Pointer erhoehen, oder gibt es bessere Loesungen?
Gruss
tanj
mittels folgender Funktion lasse ich mir eine Zeichenkette einlesen:
Code:
void parseSetOfIntegers(const char* listAsString, int* list)
{
int i = 0;
const char* p = listAsString;
if (*p == 123)
{
while (*p)
{ p++;
if (*p >=48 && *p <= 57)
{
list[i] = atoi(p);
i++;
}
}
}
}
Die Zeichenkette soll die Form {X,XX,X} haben, fuer X nur ganze Zahlen. Das funktioniert auch wunderbar fuer X<10. Fuer X>=10 tritt das Problem auf, dass zwar, z.B. fuer {123, 6, 8} die einstelligen Zahlen normal eingelesen werden. Fuer die 123 aber passiert folgendes: In list[0] steht 123, in list[1] 23 und in list[2] 3.
Ich kann mir denken, dass es daran liegt, dass atoi alle Zeichen in einen Integer umwandelt die ab Adresse p stehen, fuer alle Zeichen, fuer die das moeglich ist. Es beginnt also bei Adresse von 1, ist kein Problem, also weiter 2 und 3 ist auch kein Thema und dann steht da ein Komma in Ascii und es bricht ab. In list[0] wird also 123 geschrieben. Es wird anschliessend der Pointer um eins erhoeht und wir starten bei 2, dass gleiche Spiel von vorn.
Muss ich als Loesung die Stelligkeit jeder einzelnen Zahl in list berechnen und dementsprechend dann den Pointer erhoehen, oder gibt es bessere Loesungen?
Gruss
tanj