Mehrere Zahlen aus char-array
-
Hallo,
ich habe ein Programmierproblem:
Ich soll aus einem Char-array mit ca 250 zeichen alles Zahlen ausgeben. In diesem Array ist ein String gespeichert. Wie mache ich das effizient??
gruß
JonnyC++
-
Hi,
geh jedes Zeichen durch und prüfe, ob es der Beginn einer Zahl ist - wenn ja, einfach umwandeln und dann weiter machen!
-
dazu kann man die funktionen aus der ctype.h nutzen
-
JonnyC++ schrieb:
Ich soll aus einem Char-array mit ca 250 zeichen alles Zahlen ausgeben. In diesem Array ist ein String gespeichert.
Kannst du das etwas genauer formulieren?
Willst du die ASCII-Zahlenwerte? Repräsentiert der String Zahlen? Sind diese einstellig/mehrstellig, kommen noch andere Zeichen ausser Zahlen vor? Oder...?
player4245 schrieb:
dazu kann man die funktionen aus der ctype.h nutzen
Wenn schon
<cctype>, aber auch da eher<locale>(sofern das wirklich das Problem ist).
-
ein beispiel inhalt wäre : Ein Supermarkt mit 13 Mitarbeitern hat hat pro Monat einen Verlust von -100 euro.
Wenn ich doch jedes zeichen durchgehe dann wird das minus ja auch als zeichen genommen gibt das keine probleme??
-
Wenn du das '-' Zeichen auch als den Beginn einer Zahl definierst, dann gibt es auch keine Probleme. Lass dir die Arbeit ein bisschen erleichtern: Nimm zum Umwandeln strtol, oder wenn du Kommawerte hast strtod. Der zweite Parameter dieser Funktionen liefert dir die Position im String, an der du mit der Suche nach Zahlen weiter machst(oder das Ende des String).
-
Umwandl0r schrieb:
Lass dir die Arbeit ein bisschen erleichtern: Nimm zum Umwandeln strtol, oder wenn du Kommawerte hast strtod.
Oh!Oh! C!!! Ich halt mir schon mal die Ohren zu ...

-
Mitleid schrieb:
Umwandl0r schrieb:
Lass dir die Arbeit ein bisschen erleichtern: Nimm zum Umwandeln strtol, oder wenn du Kommawerte hast strtod.
Oh!Oh! C!!! Ich halt mir schon mal die Ohren zu ...

Ja ne, is schon klar, wa.
Man ja auch als C++ Superheroe nen stringstream nehmen.

-
also es haut noch nicht ganz hin.
ich dachte mir zuerst diesen text zu durchsuchen und nur die zahlen herauszunehmen und in ein feld voller chararrays zu kopieren;
danach dieses chararray nehmen und dann mit atoi() in int-werte oder float werte zu casten.
gibt es eine funktion die folgendes macht : "blahh blahh ... -2425535 ... blah blahh ... 2222292 ... +23315"
-> "-2425535" , "2222292" , "+23315" als char-array. und dann mit atoi() als werte
weil bei isalpha() hab ich probleme mit dem minus. keine ahnung wie ichs damit machen soll
-
isalpha() ist für buchstaben.
Ich hab gerade mal um zu sehen ob ich das hinkriegen würde was programmiert was auch funktioniert hat. Da ichs ja eh schon geschrieben habe stelle ich es mal rein.#include <ctype.h> #include <stdio.h> #include <string.h> void parseStr(char *str) { char *p=str; while (*p!=0) { if (isdigit(*p) || (*p=='-' && isdigit(*(p+1)))) { printf("%d ", strtol(p, &p, 10)); } p++; } } int main() { char str[]="Im Supermarkt kauften wir 7 Aepfel und 3 Orangen, wir bekamen -40 Cent zurück"; parseStr(str); return 0; }das ist jetzt zwar C aber man kann es ja auch in C++ umsetzen
-
danke das hat funktioniert : )