c - 数字到整数的顺序相同 C

标签 c arrays

我有一个名为 fun(int num, int * array); 的函数这需要 intint array作为其论据。我正在尝试转换int到数组。

当我运行程序时,我没有正确显示数组

int fun(int num, int*array) {
   int count =0;
   while(num>0) {
      num/= 10;
      count++;
   }
   array[count];
   // for loop works
 }

当我在程序中打印数组时,即每次运行程序时,我都会得到随机数字。

最佳答案

这条线应该做什么?

array[count];

由于您的整数数组将在您的 fun 函数中发生变化,因此您必须分配内存(通过使用 malloc、realloc...)。

编辑:另外,当您计算“num”中有多少位数字时,您已经更改了“num”所保留的值。 复制“num”!

编辑2:我越看你的函数,就越觉得你在使用它时会遇到问题。

首先,您想将整数分解为 int 数组。 好的,但是整数有范围,因此意味着整数有最大位数。 根据我的内存,64位整数有20位。 所以你可以简单地使用“int array[NB_DIGIT_INT_MAX];”与“#define NB_DIGIT_INT_MAX 21”。 因此,分配是不必要的,并且会增加代码的复杂性(调用者必须在函数调用后释放)。

其次,你的 fun 函数没有说明有多少个 case 将保存你的整数。 假设 num = 12,您的数组将具有“array[0] = 1,array[1] = 2”,但是您如何知道在哪里停止? 如果 num = 2345,您如何知道数组中只有第 4 个案例是合法的? 有两种方法:您有另一个变量来保存数组的实际大小,或者您的数组中有一个特殊值表示“结束”(例如用作字符串的 char 数组的“\0”)。

您可以使用“-1”。

让我们尝试一下,如果有不清楚的地方,请随时提问(英语不是我的母语)

关于c - 数字到整数的顺序相同 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48426126/

相关文章:

c++ - 带有map()/mapto()函数的C/C++库?

c - 为什么访问 C :\Windows\System32\. 的 Windows 命令 .. 在 C 程序中不起作用?

javascript - 为什么它返回 '-1'而不是索引jQuery的索引

arrays - 如何在 MongoDB 中检索对象内的不同键

java - 搜索 200 k 整数数组的数组? java

jquery - 使用 inArray() 检查坐标是否在 jQuery 数组中

c - Arduino增量运算符不影响变量吗?

c++ - 定义宏后的哈希符号?

复杂的单行条件校验和定义

javascript - 当数组项具有相应的数组值时,如何合并数组项?