C 转换导致错误的类型

C 转换导致错误的类型,c,C,我被困在一个大学项目中,如下所示: 在我知道输入的格式之前,我就已经在做了,所以我开始用%s读取它,它是一个字符[32]。 然后当项目发布时,我意识到我需要将输入读取为int。 所以现在我开始把它读成int,现在我不想再做我做的所有其他函数,它们以字符数组的形式接收参数(char[32])。 所以我做了一个函数将int值转换为int*,因为我不能返回char[32]。因此,我在main上做了一个简单的for,将int*中的值传递给char[32]。问题是,当我在main上打印它时,我看到的是完全

我被困在一个大学项目中,如下所示: 在我知道输入的格式之前,我就已经在做了,所以我开始用%s读取它,它是一个字符[32]。 然后当项目发布时,我意识到我需要将输入读取为int。 所以现在我开始把它读成int,现在我不想再做我做的所有其他函数,它们以字符数组的形式接收参数(char[32])。 所以我做了一个函数将int值转换为int*,因为我不能返回char[32]。因此,我在main上做了一个简单的for,将int*中的值传递给char[32]。问题是,当我在main上打印它时,我看到的是完全相同的值,但是当我将这个新字符[32]传递给我的函数时,我现在得到了一个bug。我想我的问题是因为“\0”或类似的原因

下面是一个简单的演示:

int* convert_dec_to_bin(int n){
    printf("\n");
    int i, j, k;
    int *bits;
    bits = (char*)malloc(32*sizeof(int));
    for(i = 31, j = 0; i >= 0; --i){
        printf("%d", n & 1 << i ? 1 : 0);
        if(n & 1 << i){
            bits[j] = 1;
        }else{
            bits[j] = 0;
        }
        j++;
    }
    printf("\n");
    return bits;
}


int main(){


    int i, k, instructionNameInt;
    char type;
    int *bits;
    char bitsC[32];
    //char instructionBinary[32]; I was reading like this before, ignore this line
    int instructionBinary; //Now I read like this
    scanf("%d", &instructionBinary);
    bits = convert_dec_to_bin(instructionBinary); //This is a function where I pass the int decimal input to 32 bits in binary as int*.

    //Making probably the wrong conversion here, I tried to put '\0' in the end but somehow I failed
    for(k = 0; k < 32; k++){
        bitsC[k] = bits[k];
    }
    printf("\n");


    type = determine_InstructionType(bitsC);

    printf("TYPE: %c\n", type);

    instructionNameInt = determine_InstructionName(bitsC, type);

    And several other functions...
int*将dec转换为bin(int n){
printf(“\n”);
int i,j,k;
整数*位;
位=(字符*)malloc(32*sizeof(int));
对于(i=31,j=0;i>=0;--i){

printf(“%d”,n&1如果需要32个二进制位加上一个
'\0'
,则需要一个包含33个字符的数组。此外,代码需要将整数值
0
1
转换为字符值
'0'
'1'
。您需要了解数字和该数字所代表的数字的ascii表示形式@用户3386109,我完全被“0”和“1”分散了注意力,结果发现这和33个字符是问题所在!rotfl感谢您的帮助!请解释
bits=(char*)malloc
…,其中
bits
int*