C. 传递要修改的指针导致段错误

标签 c pointers segmentation-fault

我正在用 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/

相关文章:

c - Strcpy 在同一上下文中第二次使用时崩溃了

c++ - Parsing variable and segmentation fault (core dumped) 错误

c - 从命令行读取文本文件 C

c - 为什么这段代码会打印同样的内容 5 次?

c - 如何将 bmp 文件字节排序为小端,并给我倒序的前 2 个字节?

c++ - 通过指针在 C++ 中的 char array[] 中小写大写字母

c++ - 如何在 if 语句之外访问在 if 语句内创建的指针?

c - 仅使用算术运算符将美元金额排序为 20/10/5/1(无循环)

c - C 中的递归 union 定义

c++ - 使用指针数组时编程 "has stopped working"