我被困在一个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...
有人能照亮我,我该如何解决?我花了几个小时仍然没有实现将这个正确地传递给一系列字符。