N
Nezhate
Hi There,
I'm writing a program that takes a decimal number and returns it's
binary equivalent.
the problem is that I don't know how to return (from function) the
binary value as an array of cocatenated characters. For example : I
want to convert number 3 using 4 bits, ie 3 <----> "0011".
After executing, I'm getting this warning:
warning: return from incompatible pointer type
line:49: warning: function returns address of local variable
Here it is my code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int power (int base, int m);
char* dec2bin(int input, int m);
int main ()
{
int input = 0;
int m = 0;
printf("Number to convert\n");
scanf("%d", &input);
printf ("Number of bits\n");
scanf ("%d",&m);
printf("input %d is converted to %s\n",input,dec2bin(input, m));
exit (0);
}
char* dec2bin(int input, int m)
{
static int i = 0;
char* array[m+1];
int limit = 0;
limit = power(2, m);
const int MASK = limit/2; // the binary equivalent is: 1 + m 0 bits
array[m] = '\0';
for (i= 0; i < m ;i++)
{
if (input & MASK){
strcpy(array,"1");}
else{
strcpy(array,"0");}
input = input << 1;
}
return (array);
}
int power (int base, int m)
{
static int i;
int p=1;
for (i = 1; i <= m; ++i)
{
p =p * base;
}
return p;
}
I'm writing a program that takes a decimal number and returns it's
binary equivalent.
the problem is that I don't know how to return (from function) the
binary value as an array of cocatenated characters. For example : I
want to convert number 3 using 4 bits, ie 3 <----> "0011".
After executing, I'm getting this warning:
warning: return from incompatible pointer type
line:49: warning: function returns address of local variable
Here it is my code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int power (int base, int m);
char* dec2bin(int input, int m);
int main ()
{
int input = 0;
int m = 0;
printf("Number to convert\n");
scanf("%d", &input);
printf ("Number of bits\n");
scanf ("%d",&m);
printf("input %d is converted to %s\n",input,dec2bin(input, m));
exit (0);
}
char* dec2bin(int input, int m)
{
static int i = 0;
char* array[m+1];
int limit = 0;
limit = power(2, m);
const int MASK = limit/2; // the binary equivalent is: 1 + m 0 bits
array[m] = '\0';
for (i= 0; i < m ;i++)
{
if (input & MASK){
strcpy(array,"1");}
else{
strcpy(array,"0");}
input = input << 1;
}
return (array);
}
int power (int base, int m)
{
static int i;
int p=1;
for (i = 1; i <= m; ++i)
{
p =p * base;
}
return p;
}