转换导致错误的类型

时间:2018-05-30 00:50:04

标签: c

我被困在一个univ项目中如下: 在我知道输入的格式之前我就是这样做的,所以我开始用%s读它,它是一个char [32]。 然后当项目发布时,我意识到我需要将输入读作int。 所以现在我开始将它作为int读取,现在我不想再制作我所做的所有其他函数,并且它们正在接收参数作为字符数组(char [32])。 所以我创建了一个函数将int值转换为int *,因为我不能返回char [32]。因此,我在main上做了一个简单的方法,将int *中的值传递给char [32]。问题是,当我在main上打印它时,我看到完全相同的值,但是当我将这个新的char [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...

有人能照亮我,我该如何解决?我花了几个小时仍然没有实现将这个正确地传递给一系列字符。

0 个答案:

没有答案