Правильно копировать массив из одной функции в другую - PullRequest
0 голосов
/ 05 марта 2019

Мой вопрос на 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");
}

Спасибо

...