函数不返回数组值

时间:2019-02-11 02:39:13

标签: c

我正在从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 :(得分:0)

在C中,您不能返回数组。我建议在主函数中创建一个数组,并将指向该数组的指针作为该函数的参数传递。然后,该函数将更新数组值,您可以在主函数中访问这些值。