Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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ß?

Geschrieben

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.

Geschrieben
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:

Geschrieben
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.

Geschrieben
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?
Geschrieben
Dann benutzt du atoi falsch. Ohne den Code kann dir da niemand weiterhelfen. :rolleyes:

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!"

Geschrieben
char* puffer = _atoi(Zahl);

Diese Zeile ist kompletter Blödsinn.

  • Zahl ist ein uninitialisierter Zeiger, da darfst du gar nichts reinschreiben
  • Du brauchst Zahl auch gar nicht
  • atoi 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?

Geschrieben
Diese Zeile ist kompletter Blödsinn.

  • Zahl ist ein uninitialisierter Zeiger, da darfst du gar nichts reinschreiben
  • Du brauchst Zahl auch gar nicht
  • atoi 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

Geschrieben
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.?

Geschrieben
Kann es sein das du dort auch der freundliche Helfer warst. denn dort ist die selbe Signatur wie hier.:)
:D

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.
Geschrieben
:D

;) 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

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...