我正在用 C 语言为一个类制作一个十进制到二进制的转换器。我想将 char 数组以及小数作为 int 传递给我的函数。 即 void DtoB(int Decimal, char *array); DtoB 将进行数学计算并将数组修改为二进制值。理想情况下给它 int 值。 Main() 只会 scanf(decimal)、DtoB(decimal,array) 和 printf(array)。
这是我所拥有的。这只会返回段错误
1 #include <stdio.h>
2 #include <math.h>
3
4 void DecToBin(unsigned int, char *binary);
5
6 int main()
7 {
8 unsigned int dec;
9 char *binary[];
10 while(1) {
11 scanf("%d", &dec);
12 DecToBin(dec,*binary);
13 printf("In binary is ");
14 printf("%s\n",binary);
15 }
16 }
17 void DecToBin(unsigned int dec, char *binary)
18 {
19 int counter=0;
20 while(dec) {
21 binary[counter]=dec%2;
22 dec/=2;
23 counter++;
24 }
25 }
我希望这样做,因为这似乎是能够处理 32 位整数,同时保持数组最小大小的最佳方法。 抱歉,如果我取消了格式化。任何帮助表示赞赏。
最佳答案
char *binary[33]
binary 是指针数组。所以里面的每个元素都是一个指针。
段错误是因为您没有初始化数组并尝试使用它。
您正在取消引用未指向任何有效内存位置的指针。
使用数组成员之前需要为其分配内存
关于C. 传递要修改的指针导致段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35029515/