I'm trying to "Write a function itob(n, s, b) that converts the
integer n into a base b character represeantation in the string s. In
particular, itob(n, s, 16) formats n as a hexadecimal integre in s.
itob must be recursive. " It's #3-5 in the C Programming language by
KandR. I also made a main to test it:
void itob(int n, char s[], int b);
main ()
{
/*void itob(int n, char s[], int b);*/
int b[]={2, 6, 8, 10, 16, 32};
int p[]={2, 6, 8, 10, 16, 32, 1239757};
char s[BUFSIZ];
int i, j;
for(i=0; i<7; i++){
for (j=0; j<6; j++){
itob(p[i], s, b[j]);
printf("s is %d\n",s);
printf("******* ******\n");
}
}
}
void itob(int n, char s[], int b)
{
int i, sign;
i=0;
printf("number is %d\n",n);
printf("base is %d\n",b);
if ((sign = n) <0 )
n = -n;
if (n/b>0)
itob(n/b,s,b);
s[i++]=n%b;
s[i]='\0';
printf("grrrr s[i++]is %d\n",s[i]);
}
But this is the sort of output I get (just a very small sample)
*************
number is 1239757
base is 16
number is 77484
base is 16
number is 4842
base is 16
number is 302
base is 16
number is 18
base is 16
number is 1
base is 16
grrrr s[i++]is 0
grrrr s[i++]is 0
grrrr s[i++]is 0
grrrr s[i++]is 0
grrrr s[i++]is 0
grrrr s[i++]is 0
s is 134510020
*************
number is 1239757
base is 32
number is 38742
base is 32
number is 1210
base is 32
number is 37
base is 32
number is 1
base is 32
grrrr s[i++]is 0
grrrr s[i++]is 0
grrrr s[i++]is 0
grrrr s[i++]is 0
grrrr s[i++]is 0
s is 134510020
I just don't enjoy recursion :,[
integer n into a base b character represeantation in the string s. In
particular, itob(n, s, 16) formats n as a hexadecimal integre in s.
itob must be recursive. " It's #3-5 in the C Programming language by
KandR. I also made a main to test it:
void itob(int n, char s[], int b);
main ()
{
/*void itob(int n, char s[], int b);*/
int b[]={2, 6, 8, 10, 16, 32};
int p[]={2, 6, 8, 10, 16, 32, 1239757};
char s[BUFSIZ];
int i, j;
for(i=0; i<7; i++){
for (j=0; j<6; j++){
itob(p[i], s, b[j]);
printf("s is %d\n",s);
printf("******* ******\n");
}
}
}
void itob(int n, char s[], int b)
{
int i, sign;
i=0;
printf("number is %d\n",n);
printf("base is %d\n",b);
if ((sign = n) <0 )
n = -n;
if (n/b>0)
itob(n/b,s,b);
s[i++]=n%b;
s[i]='\0';
printf("grrrr s[i++]is %d\n",s[i]);
}
But this is the sort of output I get (just a very small sample)
*************
number is 1239757
base is 16
number is 77484
base is 16
number is 4842
base is 16
number is 302
base is 16
number is 18
base is 16
number is 1
base is 16
grrrr s[i++]is 0
grrrr s[i++]is 0
grrrr s[i++]is 0
grrrr s[i++]is 0
grrrr s[i++]is 0
grrrr s[i++]is 0
s is 134510020
*************
number is 1239757
base is 32
number is 38742
base is 32
number is 1210
base is 32
number is 37
base is 32
number is 1
base is 32
grrrr s[i++]is 0
grrrr s[i++]is 0
grrrr s[i++]is 0
grrrr s[i++]is 0
grrrr s[i++]is 0
s is 134510020
I just don't enjoy recursion :,[
Comment