wie kann ich Zahlen im Zeiger (Hilfszeiger) auslesen
-
wie parse ich den den String.
Die werte sind durch ein ; getrennt (ist im 1 Thread nen Bild)(AP2;YBYA1:bBXB12;PVO)
so sieht es im Zeiger aus.und es verändern sich nur die Zahlen.
AP...;XBYA...;bBXB...;PV... die Buchstaben bleiben immer gleich.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
-
Bard00 schrieb:
Wie kriege ich diese Zahl dann in eine int Variable
Meine Güte. Such nach ";YBYA", geh von da aus 5 Zeichen weiter (denn so lang ist dein Suchstring), und wende atoi an. Für die andere Zahl analog.
-
MFK schrieb:
Bard00 schrieb:
Wie kriege ich diese Zahl dann in eine int Variable
Meine Güte. Such nach ";YBYA", geh von da aus 5 Zeichen weiter (denn so lang ist dein Suchstring), und wende atoi an. Für die andere Zahl analog.
Es funzt aber bei mir nicht.
Fehlermeldung: 'int' kann nicht in 'char *' konvertiert werden
-
Bard00 schrieb:
Fehlermeldung: 'int' kann nicht in 'char *' konvertiert werden
Der Code dazu wäre natürlich hilfreich gewesen. Meine Glaskugel ist in der anderen Hose

-
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!"
-
int alteBsNr = atoi( strstr( Hilfszeiger, ";YBYA" ) + 5 );Fertig.
(Wenn du sicherstellen kannst, dass der Suchstring immer drin ist)
-
MFK schrieb:
int alteBsNr = atoi( strstr( Hilfszeiger, ";YBYA" ) + 5 );Fertig.
(Wenn du sicherstellen kannst, dass der Suchstring immer drin ist)
Hallo ich danke dir aber was ist wenn im String zb ";YBYA34" steht wie bekomme ich da die 34 raus denn die zahl 34 bestht ja dann aus der 5 und 6 Stelle?
oder die zahl 134 diese besteht ja dann aus der 5 und 6 und7 stelle.
-
ich würde so vorgehen
- deinen kompletten String in einzelne String zerlegen mit Hilfe von der Funktion strtok und ";" als Separator
- jeden Stringzerlegen in zwei Strings: buschtabe und Zahl mit wieder der Funktion strtok , dieses mal mit "0123456789" als separator.
- zahl konvertieren mit atoi
-
mein Vorschlag:
/* ich möchte die Werte 1; AP2; vBYA1; bBXBA12; PVO auslesen Die werte sind durch ein ; getrennt (ist im 1 Thread nen Bild) (AP2;YBYA1:bBXB12;PVO) so sieht es im Zeiger aus. und es verändern sich nur die Zahlen. AP...;XBYA...;bBXB...;PV... die Buchstaben bleiben immer gleich. */ #include<stdio.h> #include<string.h> #include<stdlib.h> int main() { char* hilfezeiger = "AP2;YBYA1;bBXB12;PV0"; char string[30]; char seps[] = "0123456789";// Delimit char seps1[] = ";";// Delimit int zahlen[4]; char* einzelneString[4]; char zahl[3]; char string2[10]; char * buschtaben; int gelseneZeichen = 0; int i = 0; strcpy(string,hilfezeiger); // warum stürtzt das programm ab ohne strcpy /*Each call modifies strToken by substituting a NULL character for each delimiter that is encountered.*/ // kann hilfezeiger geändert werden ??? einzelneString[0] = strtok( string, seps1 ); // erste einzelstring lesen gelseneZeichen = strlen(einzelneString[0])+1; printf("einzelne String:%s\n",einzelneString[0]); strcpy(string2,einzelneString[0]); buschtaben = strtok( string2, seps ); // erste teil (buschtaben aus dem einzelstring) printf("Buschtabe:%s\n",buschtaben ); strcpy(zahl,einzelneString[0]+strlen(buschtaben)); // zweite teil (zahl) aus dem einzelstring lesen zahlen[0] = atoi(zahl); printf("zahl:%d\n",zahlen[0] ); while (gelseneZeichen < strlen(hilfezeiger)) // solang der String nocht nicht komplett gelesen ist { strcpy(string,hilfezeiger+ gelseneZeichen ); einzelneString[i+1] = strtok( string, seps1 ); // eizelne string lesen gelseneZeichen += strlen(einzelneString[i+1])+1; printf("einzelne String:%s\n",einzelneString[i+1]); strcpy(string2,einzelneString[i+1]); buschtaben = strtok( string2, seps ); // erste teil (buschtaben aus dem einzelstring) printf("Bischtabe:%s\n",buschtaben ); strcpy(zahl,einzelneString[i+1]+strlen(buschtaben)); // zweite teil (zahl) aus dem einzelstring lesen zahlen[i+1] = atoi(zahl); printf("zahl:%d\n",zahlen[i+1] ); i++; } return 0; }das Programm habe ich jetzt auf die schnelle gemacht und könnte ien poaar schwatstellen haben
ich freue mich auf eure Anmerkungen.
-
Ich frage mich die ganze Zeit, was das mit C++ und MFC zu tun hat
