我试图让这个程序工作,但我失败了。我不知道我错在哪里。 我得到分段错误。这可能是错误是由于指针不起作用。二进制分割错误转换
#include <stdio.h>
#include <stdlib.h>
void ConvertBin(int n, int *ris,int *bit);
int main(int argc, char *argv[])
{
int n;
int ris[20];
int bit;
printf("Insert num: "); scanf("%d", &n);
ConvertBin(n,ris,&bit);
for (int i=bit; i!=0; i--)
{
printf("%d", *(ris+i));
}
return 0;
}
void ConvertBin(int n, int *ris, int *bit)
{
int i = 0;
while (n!=0)
{
*(ris+i) = n%2;
n = n/2;
i++;
}
bit = &i;
}
现在确定它可以工作,但不完全。它被执行,但我没有得到我方面的结果。例如,如果我插入数字3,我将得到15785073521 – Mazzy
这可能是因为你已经填充了'ris [0 ... bits-1]',但是你正在打印'ris [1 ... bits]'。试试'printf(“%d”,ris [i-1]);'(或者* *(ris + i-1)'如果你喜欢这种形式)。 – Inspired
是的,当然......多么愚蠢的错误......非常感谢你! – Mazzy