Hallo zusammen,
ich habe wieder ein C/C++ Prgrammierproblem.
Ich habe das nun folgendermaßen versucht:
|
C/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
|
char sResult[254];
readfunktion(source,sResult);
printf("sResult = %s\n", sResult);
int status1=int(sResult[3]);
int status2=int(sResult[8]);
printf("Status1 = ");
for(int y=7;y>=0;y--)printf("%d",(status1&(1<<y))?1:0);printf("\n");
printf("Status2 = ");
for(int y=7;y>=0;y--)printf("%d",(status2&(1<<y))?1:0);printf("\n");
|
Diese Methode hat folgende Schwachstelle:
1. muss sich das zu zerlegende Zeichen immer an der/den selben Stellen im Array befinden (hier das 4. und 9. Element).
2. kann ich mit dem Code nun nicht weiterarbeiten.
Die Ausgabe sieht dabei folgendermaßen aus:
sResult = 1MS`,2MS@
Status1 = 01100000
Status2 = 01000000
Ich würde gerne noch diesen binären Code genauer anschauen und zwar in folgender Weise:
Ich möchte jede Ziffer darauf untersuchen ob sie 0 oder 1 ist und je nachdem was zutrifft weitermachen.
Hat da jemand eine Idee wie ich die beiden Schwachstellen bei meiner Lösung umgehen kann?
--------------------------------------------
|
C/C++-Quelltext
|
1
2
3
4
|
//alt und gelöst: aus char array zwei float Zahlen auslesen
char sResult[254];
//fill sResult
printf("sResult = %s\n",sResult);
|
sResult enthält folgendes:
1TP0.0000\n2TP0.0000
Das "\n" ist ein Zeilenumbruch.
Bei dem füllen des Arrays ist immer ein 1TP gefolgt von einer Kommazahl. Danach ein Zeilenumbruch und 2TP gefolgt von einer Kommazahl. Die Formatierung ist auch immer gleich (siehe Bsp.)
Ich möchte nun die beiden Kommazahlen in unterschiedlichen Variablen speichern. Wie mache ich das?
Das Problem ist folgendermaßen gelöst:
|
C/C++-Quelltext
|
1
2
|
double pos1,pos2;
sscanf(sResult,"1TP%lf\n2TP%lf",&pos1,&pos2);
|
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Chenda« (8. Juli 2009, 12:20)