Мой вопрос на C - как правильно взять двоичный массив, который я получаю в binaryConversion (), и скопировать его в integer.binary внутри makeInt ().
Я попытался сделать так, чтобы binaryConversion () возвращал указатель, который затем разыменовывался и копировался в новый массив, но я почти уверен, что это неправильно в некотором смысле.Это моя неудачная попытка:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <limits.h>
struct Integer{
int decimal;
int binary[32];
};
int * binaryConversion(int num){
int bin_buffer[32];
int * ptr = bin_buffer;
unsigned int mask = INT_MIN;
for(int i = 0; i < 32; i++){
if(mask & num == 1){
bin_buffer[i] = 1;
}
else{
bin_buffer[i] = 0;
}
mask >>= 1;
}
return ptr;
}
struct Integer makeInt(int num){
struct Integer integer;
int * ptr = binaryConversion(num);
for(int i = 0; i < 32; i++){
integer.binary[i] = *(ptr+i);
}
}
, и она должна работать с этим кодом драйвера:
struct Integer makeInt(int);
void binaryTester(int array[], int test[], int size){
int i;
for(i = 0; i < size; i++){
assert(array[i] == test[i]);
}
printf("\n");
}
int main(){
int size = sizeof(int) * 8;
int array[size], i;
struct Integer test;
printf("\n\t=========Test #7: Conversion of 2===========\n\n");
test = makeInt(2);
int test1[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0};
printf("\n\t\t....Converting 2 Passed\n");
}
Спасибо