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