D
Wandiii schrieb:
int2str und str2int sind das Funkionen die einen integer in einen string umwandeln und umgekehrt?
Genau.
Beispiel:
char str[100]; //Platz für den String reservieren
int2str(str, 42, 2); // Die Zahl 42 in Form einer Dualzahl in den String schreiben
printf(str); // String ausgeben
Zahlen im Quellcode werden vom Compiler in eine Binäre Form umgewandelt. Also die 2 und die 42 werden in dem Fall in einen integer umgewandelt und in die .exe gechrieben. Diese Integers werden der Funktion int2str übergeben. Es ist also nicht richtig bei Integers von dezimalen Zahlen zu reden. Dezimal sind sie nur im Quellcode, das ist aber irrelevant. Man könnte genausogut schreiben
int2str(str, 0x2A, 0x2)
Die erzeugte .exe wäre absolut identisch. 0x2A ist eine Hexadezimalzahl (Basis 16) = 42 Dezimal.
int2str benutzt genau die Methode, die dein Lehrer verlangt hat.
Das +'0' wandelt das Ergebnis in eine char um.
Also 0 + '0' = '0'
1 + '0' = '1' usw.
str[i]='\0' ist da um das Ende des String zu markieren. In C befindet sich immer ein '\0' am Ende eines Strings. Das nennt sich Null-terminierter String.
Hinterher wird der entstandene String noch umgedreht, da bei dem Verfahren ja die Ziffern in umgekehrter Reihenfolge rauskommen.
str2int macht genau das umgekehrte. Mit der der Basis multiplizieren und Ziffer addieren. Das ist die exakte Umkehrung des Verfahrens, das von int2str benutzt wird.
z.B.
123
0 + 1 = 1
1 * 10 = 10
10 + 2 = 12
12 * 10 = 120
120 + 3 = 123
Das geht natürlich auch mit Dualzahlen
101010
0 + 1 = 1
1 * 2 = 2
2 + 0 = 2
2 * 2 = 4
4 + 1 = 5
5 * 2 = 10
10 + 0 = 10
10 * 2 = 20
20 + 1 = 21
21 * 2 = 42
42 + 0 = 42