Board00 Geschrieben 25. April 2007 Geschrieben 25. April 2007 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ß? Zitieren
Guybrush Threepwood Geschrieben 25. April 2007 Geschrieben 25. April 2007 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. Zitieren
Board00 Geschrieben 25. April 2007 Autor Geschrieben 25. April 2007 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: Zitieren
Sloenig Geschrieben 25. April 2007 Geschrieben 25. April 2007 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(). Zitieren
Board00 Geschrieben 25. April 2007 Autor Geschrieben 25. April 2007 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. Zitieren
Klotzkopp Geschrieben 25. April 2007 Geschrieben 25. April 2007 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? Zitieren
Board00 Geschrieben 26. April 2007 Autor Geschrieben 26. April 2007 bei mir funktioniert aber nicht atoi Fehlermeldung: 'Initialisierung': 'int' kann nicht in 'char *' konvertiert werden Zitieren
Klotzkopp Geschrieben 26. April 2007 Geschrieben 26. April 2007 Dann benutzt du atoi falsch. Ohne den Code kann dir da niemand weiterhelfen. Zitieren
Board00 Geschrieben 26. April 2007 Autor Geschrieben 26. April 2007 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!" Zitieren
Klotzkopp Geschrieben 26. April 2007 Geschrieben 26. April 2007 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? Zitieren
Board00 Geschrieben 26. April 2007 Autor Geschrieben 26. April 2007 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 Zitieren
Board00 Geschrieben 26. April 2007 Autor Geschrieben 26. April 2007 könnte ich bitte mal ein bsp bekommen für strstr. Zitieren
Klotzkopp Geschrieben 26. April 2007 Geschrieben 26. April 2007 int alteBsNr = atoi( strstr( Hilfszeiger, ";YBYA" ) + 5 ); Zitieren
Board00 Geschrieben 26. April 2007 Autor Geschrieben 26. April 2007 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.? Zitieren
Klotzkopp Geschrieben 26. April 2007 Geschrieben 26. April 2007 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. Zitieren
Board00 Geschrieben 26. April 2007 Autor Geschrieben 26. April 2007 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 Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.