for文を使用して値を代入したいです。教えてください。
5桁の10進数文字を16進数に変換するコードを作成したのですが、コード上の「商と余りを配列に代入」の箇所をfor文で作成したいのですが、うまくいかず1文1文のコードになってしまいました。「商と余りを配列に代入」する箇所に、当てはまるfor文のコードの所だけ、書き換えたいので教えていただけないでしょうか?
//10進数文字を数字の16進数で表示//
#include "stdafx.h"
#define HEX 5
//「function」:入力文字された文字の処理//
char ToInt( char cInt)
{
int mal=0;
switch (cInt){
case '0': mal=0; break;
case '1': mal=1; break;
case '2': mal=2; break;
case '3': mal=3; break;
case '4': mal=4; break;
case '5': mal=5; break;
case '6': mal=6; break;
case '7': mal=7; break;
case '8': mal=8; break;
case '9': mal=9; break;
}
return (mal);
}
//「function」:入力文字された文字数//
char HexInt( char eInt)
{
char mul=0;
switch (eInt){
case 0: mul='0'; break;
case 1: mul='1'; break;
case 2: mul='2'; break;
case 3: mul='3'; break;
case 4: mul='4'; break;
case 5: mul='5'; break;
case 6: mul='6'; break;
case 7: mul='7'; break;
case 8: mul='8'; break;
case 9: mul='9'; break;
case 10: mul='A'; break;
case 11: mul='B'; break;
case 12: mul='C'; break;
case 13: mul='D'; break;
case 14: mul='E'; break;
case 15: mul='F'; break;
}
return (mul);
}
//「function」:桁数の計算(10×指数を計算)//
int HexAcc( int n )
{
int i;
int ans=1;
for( i=0; i<n; i++ ){
ans *= 10;
}
return (ans);
}
int _tmain(int argc, _TCHAR* argv[])
{
int i=0,n=0,j=0,k=0,s=0,m=0;
char decimal[255], ditto[255],sub[255],temp[255],flip[255],na[255];
int u=0,odd=0;
int a=0,b=0;
int sam1=0,sam2=0,sam3=0,sam4=0,sam5=0;
int mas1=0,mas2=0,mas3=0,mas4=0,mas5=0;
if( argc > 1 ){
decimal[s] = argv[1][i];
}
else{
printf("10進数を入力してください。\n");
return 1;
}
for( k=0; k<=HEX; k++ ){
sub[k] = '0';
}
for( k=0; k<=HEX; k++ ){
temp[k] = '0';
}
for( k=0; k<=HEX; k++ ){
flip[k] = '0';
}
for( k=0; k<=HEX; k++ ){
na[k] = '0';
}
for( i=0; argv[1][i] != '\0'; i++ ){
decimal[i] = argv[1][i];
}
decimal[i] = '\0';
for( i=0; decimal[i] != '\0'; i++ ){
if( decimal[i] != ' ' ){
ditto[n] = decimal[i];
n++;
}
}
ditto[n]='\0';
for( n=0; ditto[n] != '\0'; n++ ){
if(( ditto[n] == '0' ) || ( ditto[n] == '1' ) || ( ditto[n] == '2' ) || ( ditto[n] == '3' )
|| ( ditto[n] == '4' ) || ( ditto[n] == '5' ) || ( ditto[n] == '6' )
|| ( ditto[n] == '7' ) || ( ditto[n] == '8' ) || ( ditto[n] == '9' )){
}else{
printf("エラー\n 10進数を入力してください。\n");
return 0;
}
}
for( n=0; ditto[n] != '\0'; n++ ){
m = m + 1 ;
}
if( m <= HEX ){
}else{
printf("エラー\n入力文字数は、%d文字以内にしてください。\n",HEX);
return 0;
}
for( n=0; ditto[n] != '\0'; n++){
sub[HEX-m+n] = ditto[n];
}
sub[HEX] = '\0';
int ans=0, add=0;
for( n=0; sub[n] != '\0'; n++){
ans = ToInt(sub[n]);
add += ans * HexAcc(HEX-n-1);
}
//商と余りを配列に代入//
sam1 = add / 16;
mas1 = add - sam1 *16;
temp[0] = mas1;
sam2 = sam1 / 16;
mas2 = sam1 - sam2 * 16;
temp[1] = mas2;
sam3 = sam2 / 16;
mas3 = sam2 - sam3 * 16;
temp[2] = mas3;
sam4 = sam3 / 16;
mas4 = sam3 - sam4 * 16;
temp[3] = mas4;
sam5 = sam4 / 16;
mas5 = sam4 - sam5 * 16;
temp[4] = mas5;
//商と余りを配列に代入・ここまでfor文に変更したいです//
temp[5]='\0';
for( a=0; a<2; a++ ){
b = temp[a];
temp[a] = temp[4-a];
temp[4-a] = b;
}
temp[n]='\0';
for( n=0; sub[n] != '\0'; n++){
na[n] = HexInt(temp[n]);
}
na[5]='\0';
printf("\n10進数文字を16進数で変換した値は %s \n",na);
}
お礼
ご回答ありがとうございます。 教えて頂いたやり方も使えればいいと思います。 試してみたいと思います。