Ich seh den Wald gerade vor lauter Bäumen nicht, deswegen muss ich euch mal mit was vlt. völlig banalem auf den Keks gehen. Es geht um mein Praktikum C, dort soll ein Taschenrechner gebaut werden, der beim Aufruf die Rechenoperation als Argument bekommt. Das soweit OK, klappt alles. Aber mein Prof möchte auch gerne eine Ausgabe in Binaerform haben....

Aufgabe konkret:
Nachdem Sie den Rechner so weit entwickelt und getestet haben, implementieren Sie nun die fehlende Ausgabe in Binaerdarstellung. Entwickeln Sie hierzu die Funktion void itob(int x, char str[]), die
eine Integerzahl x in die Zeichenkette str in Binaerdarstellung schreibt.
So, vorgegeben ist dann das:
Code:
/* Schreibt Binaerdarstellung von x nach str */
void itob(int x, char str[]);
Daraus habe ich gemacht:

Code:
/* Schreibt Binaerdarstellung von x nach str */
void itob(int x, char str[]){
	char strg[]={};
	int rest=2, i=0;
	// Berechnung der Binär-Stellen. Achtung: Reichenfolge falsch
	while(x > 1 ){
		rest=x%2;
		x=x/2;
		strg[i]= (char) rest;
//		printf("Binär: %i Rest:%i\n", strg[i], x);
		i++;
	}
	i--;
	// Stringfolge drehen für richtige Darstellung
	strg[i]= (char) x;
	while(i>=0){
		int j=0;
		str[j]= '0' + strg[i];
//		printf("String: %i\n",str[j]);
		i--;
		j++;
	}
}
Also die einzelnen Binaerstellen kann ich ja mit Modulo und normaler Teilung herausbekommen, dummerweise natuerlich in falscher Reihenfolge, so dass ich diese wieder drehen muss.

Leider sieht die Ausgabe meine Programms, wenn ich es mit
./Praktikum2 123 + 123
aufrufe, so aus:

Binär: 1 Rest:61
Binär: 1 Rest:30
Binär: 0 Rest:15
Binär: 1 Rest:7
Binär: 0 Rest:3
Binär: 1 Rest:1
String: 49
String: 48
String: 49
Ich habs momentan nur für die erste Zahl gemacht, damit die Zwischenausgabe nicht zu unübersichtlich wird.

Hab dazu 2, naja, 3 Fragen:
1. Hab ich Fehler gemacht bei der Umrechnung Int -> Binaer?
2. Geht das auch einfacher? Es sollen keine C-Funktionen benutzt werden, stdio.h ist die einzige zu includierende Datei.
3. wie drehe ich die Reihenfolge von str so dass der Binaerstring richtig rum ist?

Danke schonmal fürs lesen