Shuhushu
16-02-2008, 13:55
Hallo,
Ich habe folgendes Programm gescrieben und es funktioniert auch ganz gut. Nur zeigt er mir am Ende des Programms immer einen Speicherzugriffsfehler an!
./hex-dezimal
Bitte einen HEX-WERT eingeben
F
15
Speicherzugriffsfehler
Hat jemand ne Idee woran das liegen könnte?
#include <stdio.h>
/* dieses Programm wandelt HEX-Zahlen in Dezimal-Zahlen um */
void make_dezimal(char* WERT);
void translate(char* Z);
int main(void) {
char WERT; /* deklariere Variable WERT */
printf("Bitte einen HEX-WERT eingeben\n");
scanf("%s", &WERT);
make_dezimal(&WERT);
printf("%i\n", WERT);
return 0;
}
void make_dezimal(char* WERT) {
/*printf("Der eingegebene Wert ist %s.\n", HEX);*/
char Z;
Z = *WERT;
translate(&Z);
/*printf("%i\n", Z);*/
*WERT = Z;
}
void translate(char* Z)
{
switch( *Z )
{
case '0' : *Z = 0;
/*printf("%i\n", Z);*/
break;
case '1' : *Z = 1;
/*printf("%i\n", Z);*/
break;
case '2' : *Z = 2;
/*printf("%s\n", *Z);*/
break;
case '3' : *Z = 3;
/*printf("%i\n", Z);*/
break;
case '4' : *Z = 4;
/*printf("%i\n", Z);*/
break;
case '5' : *Z = 5;
/*printf("%i\n", Z);*/
break;
case '6' : *Z = 6;
/*printf("%i\n", Z);*/
break;
case '7' : *Z = 7;
/*printf("%i\n", Z);*/
break;
case '8' : *Z = 8;
/*printf("%i\n", Z);*/
break;
case '9' : *Z = 9;
/*printf("%i\n", Z);*/
break;
case 'A' : *Z = 10;
/*printf("%i\n", Z);*/
break;
case 'B' : *Z = 11;
/*printf("%i\n", Z);*/
break;
case 'C' : *Z = 12;
/*printf("%i\n", Z);*/
break;
case 'D' : *Z = 13;
/*printf("%i\n", Z);*/
break;
case 'E' : *Z = 14;
/*printf("%i\n", Z);*/
break;
case 'F' : *Z = 15;
/*printf("%i\n", Z);*/
break;
default : *Z = "ERROR";
/*printf("ERROR%i\n", Z);*/
break;
}
}
kompiliert habe ich mit "gcc -o hex-dezimal hex--dezimal.c -Wall -fomit-frame-pointer -O3"
Ich habe folgendes Programm gescrieben und es funktioniert auch ganz gut. Nur zeigt er mir am Ende des Programms immer einen Speicherzugriffsfehler an!
./hex-dezimal
Bitte einen HEX-WERT eingeben
F
15
Speicherzugriffsfehler
Hat jemand ne Idee woran das liegen könnte?
#include <stdio.h>
/* dieses Programm wandelt HEX-Zahlen in Dezimal-Zahlen um */
void make_dezimal(char* WERT);
void translate(char* Z);
int main(void) {
char WERT; /* deklariere Variable WERT */
printf("Bitte einen HEX-WERT eingeben\n");
scanf("%s", &WERT);
make_dezimal(&WERT);
printf("%i\n", WERT);
return 0;
}
void make_dezimal(char* WERT) {
/*printf("Der eingegebene Wert ist %s.\n", HEX);*/
char Z;
Z = *WERT;
translate(&Z);
/*printf("%i\n", Z);*/
*WERT = Z;
}
void translate(char* Z)
{
switch( *Z )
{
case '0' : *Z = 0;
/*printf("%i\n", Z);*/
break;
case '1' : *Z = 1;
/*printf("%i\n", Z);*/
break;
case '2' : *Z = 2;
/*printf("%s\n", *Z);*/
break;
case '3' : *Z = 3;
/*printf("%i\n", Z);*/
break;
case '4' : *Z = 4;
/*printf("%i\n", Z);*/
break;
case '5' : *Z = 5;
/*printf("%i\n", Z);*/
break;
case '6' : *Z = 6;
/*printf("%i\n", Z);*/
break;
case '7' : *Z = 7;
/*printf("%i\n", Z);*/
break;
case '8' : *Z = 8;
/*printf("%i\n", Z);*/
break;
case '9' : *Z = 9;
/*printf("%i\n", Z);*/
break;
case 'A' : *Z = 10;
/*printf("%i\n", Z);*/
break;
case 'B' : *Z = 11;
/*printf("%i\n", Z);*/
break;
case 'C' : *Z = 12;
/*printf("%i\n", Z);*/
break;
case 'D' : *Z = 13;
/*printf("%i\n", Z);*/
break;
case 'E' : *Z = 14;
/*printf("%i\n", Z);*/
break;
case 'F' : *Z = 15;
/*printf("%i\n", Z);*/
break;
default : *Z = "ERROR";
/*printf("ERROR%i\n", Z);*/
break;
}
}
kompiliert habe ich mit "gcc -o hex-dezimal hex--dezimal.c -Wall -fomit-frame-pointer -O3"