Veröffentlicht 25. April 200718 j Hallo, ich steh gerade voll auf dem Schlauch.Wie erkenne ich in einem String Zahlen und gebe diese einzeln als Zahl zurück und die Position an der diese Zahl in dem String stand? Ich muss Zahlen in einem String ersetzen und komm nicht zurecht :hells: :hells: Hat jemand einen Denkanstoß?
25. April 200718 j Kommt drauf an wenn dein String einfach ein Char Array ist kannst mit ner Schleife drüberlaufen und prüfen ob das aktuelle Zeichen eine Zahl ist (zum beispiel mit isdigit() und das ggf. ersetzen. Wenn es sich um irgendeine String Klasse handelt solltest du dir mal deren replace Methoden anschauen.
25. April 200718 j Kommt drauf an wenn dein String einfach ein Char Array ist kannst mit ner Schleife drüberlaufen und prüfen ob das aktuelle Zeichen eine Zahl ist (zum beispiel mit isdigit() und das ggf. ersetzen. Ok, isdigit kannte ich nicht. Ich hab einen String und dazwischen ist eine Zahl. Bei einer Ziffer ist das mit isDigit kein Problem, was amche ich wenn die Zahl aus mehreren Ziffern besteht? Wie kriege ich diese Zahl dann in eine int Variable, weil ich damit was überprüfen will und gegebenfalls die Zahl druch einen andere ersetzen muss? :hells:
25. April 200718 j du kannst ja die zahlen so lange in ein array rein schreiben bis ein Zeichen halt nicht mehr ne Zahl ist und dann wandelst du dieses array in ne integer zahl im mit atoi().
25. April 200718 j du kannst ja die zahlen so lange in ein array rein schreiben bis ein Zeichen halt nicht mehr ne Zahl ist und dann wandelst du dieses array in ne integer zahl im mit atoi(). ja aber atoi geht nicht denn wenn ich nur die zahl auslesen will steht vor der zahl der Asci code im Zeiger also der wert 52 für die 4 deshalb funzt atoi nicht.
25. April 200718 j ja aber atoi geht nicht denn wenn ich nur die zahl auslesen will steht vor der zahl der Asci code im Zeiger also der wert 52 für die 4 deshalb funzt atoi nicht.Natürlich steht in deinem Text der ASCII-Code. Aber das ist normal, und auch kein Problem. Wie kommst du darauf, dass das nicht funktioniert?
26. April 200718 j bei mir funktioniert aber nicht atoi Fehlermeldung: 'Initialisierung': 'int' kann nicht in 'char *' konvertiert werden
26. April 200718 j Dann benutzt du atoi falsch. Ohne den Code kann dir da niemand weiterhelfen. so sieht mein quellcode jetzt aus BausteinNummernSpeicher *Zeiger; char* Zahl; int alteBsNr; char Wert; Zeiger = (BausteinNummernSpeicher *) GlobalLock(Speicher); if (NULL == Zeiger) return false; while(((*Hilfszeiger) != ';') && ((*Hilfszeiger) != '!')) { (*Output) = (*Hilfszeiger); if (isdigit(Hilfszeiger[0])) { Wert = Hilfszeiger[0]; strcpy(Zahl,Hilfszeiger[0]); strcat(Zahl,"\0"); char* puffer = _atoi(Zahl); } Output ++; Hilfszeiger ++; }; (*Output) = '\0'; GlobalUnlock(Speicher); return true; im Hilfszeiger sieht es so aus "0x0012f279 "1;AP2;YBYA1:bBXB12;PVO!"
26. April 200718 j char* puffer = _atoi(Zahl);Diese Zeile ist kompletter Blödsinn. Zahl ist ein uninitialisierter Zeiger, da darfst du gar nichts reinschreibenDu brauchst Zahl auch gar nichtatoi gibt keinen char-Zeiger zurück. Du willst doch eine Zahl haben, oder? Warum suchst du nicht einfach mit strstr nach dem String, der unveränderlich vor der gesuchten Zahl steht, addierst die Länge dieses Suchstrings zu dem Ergebnis und wendest atoi darauf an? Wozu diese abenteuerlichen Verrenkungen?
26. April 200718 j Diese Zeile ist kompletter Blödsinn. Zahl ist ein uninitialisierter Zeiger, da darfst du gar nichts reinschreibenDu brauchst Zahl auch gar nichtatoi gibt keinen char-Zeiger zurück. Du willst doch eine Zahl haben, oder? Warum suchst du nicht einfach mit strstr nach dem String, der unveränderlich vor der gesuchten Zahl steht, addierst die Länge dieses Suchstrings zu dem Ergebnis und wendest atoi darauf an? Wozu diese abenteuerlichen Verrenkungen? ok thx muss ih mal testen
26. April 200718 j int alteBsNr = atoi( strstr( Hilfszeiger, ";YBYA" ) + 5 ); ja danke habe gerade den selben tipp in einen anderen Forum bekommen. Kann es sein das du dort auch der freundliche Helfer warst. denn dort ist die selbe Signatur wie hier. Aber was ist wenn jetzt zb hinter YBYA eine mehrstellige zahl steht wie zb 199 wie bekomme ich die dort raus. da ja die zahl sich aus 3 stellen zusamensetzt aus der 5,6 und7 stelle.?
26. April 200718 j Kann es sein das du dort auch der freundliche Helfer warst. denn dort ist die selbe Signatur wie hier. Aber was ist wenn jetzt zb hinter YBYA eine mehrstellige zahl steht wie zb 199 wie bekomme ich die dort raus.Genauso. atoi wandelt eine Zeichenkette um, keine Einzelzeichen. Die Funktion bricht erst dann ab, wenn sie auf ein Zeichen trifft, das nicht als Teil einer Zahl interpretiert werden kann.
26. April 200718 j ich sag nix weiter Genauso. atoi wandelt eine Zeichenkette um, keine Einzelzeichen. Die Funktion bricht erst dann ab, wenn sie auf ein Zeichen trifft, das nicht als Teil einer Zahl interpretiert werden kann. ah ok thx
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.