Zack
cookies vader
Hallo,
ich bin aktuell dabei ein wenig C zu lernen. Unser Prof hat und die Aufgabe geben einen int als Dezimal, Hexadezimal und Binärziffer dazustellen. Ich wollte die Chance nutzen und mich mit Pointer auseinandersetzten. Rein von meinen Überlegungen her, sollte das auch funktionieren. Ich bekomme aber den Fehler:
Kann mir jemand erklären was da falsch läuft?
Vielen Dank!
ich bin aktuell dabei ein wenig C zu lernen. Unser Prof hat und die Aufgabe geben einen int als Dezimal, Hexadezimal und Binärziffer dazustellen. Ich wollte die Chance nutzen und mich mit Pointer auseinandersetzten. Rein von meinen Überlegungen her, sollte das auch funktionieren. Ich bekomme aber den Fehler:
Code:
$ gcc foo.c -o foo
foo.c: In Funktion »crtBitStr«:
foo.c:12:16: Fehler: Als Verringerungsoperand wird L-Wert erfordert
C:
#include <stdio.h>
#include <stdlib.h>
char vBuf[128];
char* crtBitStr(unsigned int x)
{
static char buffer[sizeof(x) * 8 + 1];
int i = 0;
for (i = sizeof(x) * 8; i >= 0; i--) {
*buffer-- = (x & 1) + '0';
x >>= 1;
}
return buffer;
}
int main(int argc, char **argv)
{
unsigned int x = 0;
printf("Eingabe der Zahl: ");
fgets(vBuf, 128, stdin);
x = atoi(vBuf);
printf("***\n");
printf("dez: %d \n", x);
printf("hex: %x \n", x);
printf("bin: %s \n", crtBitStr(x));
printf("+++\n");
}
Kann mir jemand erklären was da falsch läuft?
Vielen Dank!