Функция не возвращает значения массива - PullRequest
0 голосов
/ 11 февраля 2019

Я выполняю функцию из main, которая возвращает массив. Однако он не возвращает все значения массива

#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
#include<math.h>

int *decToBinary(int n); 
//int binaryToDecimal(int);
//int binaryToDecimal( int *array_bin , unsigned int n );
int binaryToDecimal( int *array_bin );

int main()
{
    int dec, bin[500],j,k,n,i ,dec_inv[k];
    int *array_bin ;

    array_bin = (int*) malloc(50*sizeof(int));    

    char message[1000],dmessage[1000];
    int emessage[1000];

    printf("\nEnter the text\n\n");
    fgets(message,1000,stdin);

    printf("%s\n ",message);

    int len = strlen(message);
    printf("%d\n",len-1);

    char array[2][32] = {{'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',' ','.',',','?','(',')'},
                         {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31}};

    char array_inv[2][32] = {{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31},
                         {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',' ','.',',','?','(',')'}};

        for(i=0;i<=len-2;i++) {
         for(j=0;j<=1;j++) {
           for(k=0;k<=31;k++) {
            if (message[i] == array[j][k]){ 
                emessage[i] = array[j+1][k];
                          n = array[j+1][k];
                          dec = n;  
                array_bin =  decToBinary(n);
                printf("The binary equivalent of %d is %d \n", dec, array_bin[i]);
                  //  dec_inv[k] =  binaryToDecimal(array_bin);
                //printf("The inverse is %d\n", binaryToDecimal(array_bin));
        }
     }
    }               
 }
}

// function to convert decimal to binary 
int *decToBinary(int n) 
{ 
    // array to store binary number 
    static int binNum[500]; //, array_bin[31]; 

    //printf("number as input%d\n",n);
    int dec_num = n;

    // counter for binary array 
    int i = 0; // ,k ,j ; 
    if (n == 0)
    {
     binNum[i] = 0; 
        i++; 
    }
    while (n != 0) { 
        // storing remainder in binary array 
        binNum[i] = n % 2; 
            n = n / 2; 
           i++; 
    } 
    return binNum;
}

Как получить все значения массива?Возвращает только последнее значение.Функция вызывается из main и возвращает указатель на массив, в котором хранятся значения.Что нужно сделать, чтобы получить все значения массива?

1 Ответ

0 голосов
/ 11 февраля 2019

В C вы не можете вернуть массив.Я бы порекомендовал создать массив в главной функции и передать указатель на массив в качестве параметра функции.Затем функция обновляет значения массива, и вы можете получить доступ к этим значениям в основной функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...