Dies ist mein erstes Mal mit Zeigern, weshalb meine Logik wahrscheinlich sehr fehlerhaft ist. Ich schreibe ein Programm, das Zahlen in einer Zeichenfolge mit atoi() zusammenfasst. Zum Beispiel sumNumbers ("1 2 b asdsd 3 4) mein Programm sein sollte 10. Hier ist,Summe der ganzen Zahlen in einem String C
int sumString(char string[]) {
char *ptr=string;
int index = 0;
int len = strlen(string);
int sum = 0;
while(index < len) {
while (ptr[0] == ' ') {
ptr++;
index++;
if (index == len) {
return sum;
}
}
while (atoi(ptr) == 0) {
ptr++;
index++;
if (index == len) {
return sum;
}
}
if (atoi(ptr) != 0) {
sum += atoi(ptr);
ptr++;
index++;
while (ptr[0] != ' ' || atoi(ptr) != 0 || ptr[0] == '\0') {
ptr++;
index++;
}
}
}
return sum;
}
Meine erste Bedingung aller weißen Flecken loswerden sollte, meine zweite sollte laufen für alle Buchstaben halten, und meine dritte sollte den Wert von atoi addieren, bis zu einem Leerzeichen oder einem Buchstaben weitergehen, und dann sollte die Schleife erneut durchlaufen werden und die ersten beiden Bedingungen ihre Aufgaben erneut ausführen.Dies funktioniert leider in den meisten Fällen, außer wenn ich einen Buchstaben anklebe eine Zahl wie "18b5". Dies sollte 23 zurückgeben, aber es gibt 18 zurück.
(https://stackoverflow.com/q/17710018/995714) –
[? Sie nicht() verwenden atoi] Was meinen Sie? Du benutzt es. – DrJessop
hast du den Link gelesen? Ich habe nicht gesagt, dass ich es verwende –