Danny787
Ensign
- Registriert
- Jan. 2007
- Beiträge
- 180
Ich habe eine Funktion programmiert, welche eine beliebige Dezimalzahl in eine Hexadezimal umrechnet, die jeweiligen Reste werden in einem char Array abgespeichert. Jetzt steh ich jedoch vor dem Problem, dass ich dieses Array nicht richtig auf der Konsole ausgeben kann, da es sowohl Integer als auch Character Elemente beinhaltet.
Hier erstmal die Funktion:
int dez_hex (int dez, char *line){
int nz;
int nergebnis;
int nmodulo;
if (dez < 0 || dez > 65535){
return (1);
}
else {for (nz = 0; nz < 16 ; nz++){
nmodulo = dez % 16;
switch (nmodulo){
case 10: nmodulo = 'A';break;
case 11: nmodulo = 'B';break;
case 12: nmodulo = 'C';break;
case 13: nmodulo = 'D';break;
case 14: nmodulo = 'E';break;
case 15: nmodulo = 'F';break;
}
line[nz]= nmodulo;
nergebnis = dez / 16;
dez = nergebnis;
}
return 0;
}
}
Die Funktion wird in der Main aufgerufen und soll dort dann das Array ausgeben (array ist in main angelegt, von welchem die referenz der Funktion übergeben wird), doch weder mit %s oder einer for-schleife und %d oder %c wird die zahl korrekt ausgegeben, was auch logisch, da die elemente des typs char sowie integer entsprechen.
Meine Frage ist nun, ob dieser Ansatz überhaupts zu gebrauchen ist, oder muss ich das ganze komplett anders angehen?
p.s. ja ich weiß, dass die elemente noch verkehrt herum im array drin sind, die reste müssen auch noch verkehrt herum ausgegeben werden, dies wollte ich mit einer for schleife in der main regeln, welche die elemente dann richtig rum ausgibt.
Hier erstmal die Funktion:
int dez_hex (int dez, char *line){
int nz;
int nergebnis;
int nmodulo;
if (dez < 0 || dez > 65535){
return (1);
}
else {for (nz = 0; nz < 16 ; nz++){
nmodulo = dez % 16;
switch (nmodulo){
case 10: nmodulo = 'A';break;
case 11: nmodulo = 'B';break;
case 12: nmodulo = 'C';break;
case 13: nmodulo = 'D';break;
case 14: nmodulo = 'E';break;
case 15: nmodulo = 'F';break;
}
line[nz]= nmodulo;
nergebnis = dez / 16;
dez = nergebnis;
}
return 0;
}
}
Die Funktion wird in der Main aufgerufen und soll dort dann das Array ausgeben (array ist in main angelegt, von welchem die referenz der Funktion übergeben wird), doch weder mit %s oder einer for-schleife und %d oder %c wird die zahl korrekt ausgegeben, was auch logisch, da die elemente des typs char sowie integer entsprechen.
Meine Frage ist nun, ob dieser Ansatz überhaupts zu gebrauchen ist, oder muss ich das ganze komplett anders angehen?
p.s. ja ich weiß, dass die elemente noch verkehrt herum im array drin sind, die reste müssen auch noch verkehrt herum ausgegeben werden, dies wollte ich mit einer for schleife in der main regeln, welche die elemente dann richtig rum ausgibt.