habe probs bei ner decodierung
-
Hi! Bin neu hier! Also folgendes:
Habe einen Code geschrieben der funktioniert, aber die falsche Ausgabe liefert. Das Programm arbeitet falsch! Ich zeig euch mal den Code:ifstream fin2(argv[2]); while (fin2.get(ch)) { if (ch=='%') { if (a!=0) { if (a==2) { asc = (letter[0]-'0')*10 + (letter[1]-'0'); cout << (char) asc; } if (a==3) { asc = (letter[0]-'0')*100 + (letter[1]-'0')*10 + (letter[2]-'0'); cout << (char) asc; } } a=0; } else { a++; if (a=1) { letter[0] = ch; } if (a=2) { letter[1] = ch; } if (a=3) { letter[2] = ch; } } } fin2.close();
...und die Ausgabe:
*
Þ xxoÞ+ oM
*
Wäre nett wenn mir einer mal einen Tipp geben könnte! Thx!
smash++
-
Wäre auch nett wenn du mal erwähnst was er machen sollte
-
Das ist zu wenig Code um Dir "richtig" zu helfen, aber es sieht stark nach einem Fall für switch aus und "if (a=1)" etc ist wohl auch nicht das was Du machen wolltest, oder? Wäre nicht "if (a==1)" eher passend?
-
ifstream fin2(argv[2]); while (fin2.get(ch)) { if (ch=='%') { if (a) { if(a == 2) asc = (letter[0]-'0')*10 + (letter[1]-'0'); else if(a == 3) asc = (letter[0]-'0')*100 + (letter[1]-'0')*10 + (letter[2]-'0'); cout << char(asc); a=0; } else if(a >= 0 && a < 3 && sizeof(letter) / sizeof(char) < a) letter[a] = ch; } fin2.close();
dürfte eigentlich besser funzen
[ Dieser Beitrag wurde am 31.03.2003 um 16:13 Uhr von MaSTaH editiert. ]
-
Hi!
Habe inzwischen schon etwas herumprobiert. Wenn man den Code folgendermaßen ändert,if (a==2) { asc = (letter[0]-'0')*10 + (letter[1]-'0'); letter[2] = 0; cout << letter << '§'; /* cout << (char) asc; */ } if (a==3) { asc = (letter[0]-'0')*100 + (letter[1]-'0')*10 + (letter[2]-'0'); letter[3] = 0; cout << letter << '§'; /* cout << (char) asc; */ }
müsste das Programm das Eingabefile ausgeben, nur mit einem § als Trennzeichen. Das tut es aber nicht, sondern es gibt folgendes aus:
222º777º888º888º111º333º
Auffallend ist das es immer 3 Zahlen sind, und aus der letzten Zahl jedes Paares besteht!PS:
Was ich übrigens vergessen habe, das Programm liest von einer Datei z.B. folgende ASCII-Zeichen:
%72%97%108%108%111%33%
Es überspringt das %-Zeichen, liest die 7 und die 2 ein und beim nächsten %-Zeichen verarbeitet es die 7 und die 2. Dürfte eigentlich nicht so schwer sein, aber anscheint habe ich was übersehen!smash++