c - 如何将数组定义为数字字符串的长度?

标签 c arrays string

我不确定具体该怎么做。如果有人有一些专家建议,那将非常有帮助!

#define SIZE ((int) (sizeof(digit_count)/sizeof(digit_count[0]))
#define N count

int main()
{
    int i, num, count, digit_count[N] = {0};

   printf("Enter a number: ");
   scanf("%d", &num);

   while (num != 0)
   {
      digit_count[num % 10]++;
      num /= 10;
      ++count;
   }

 for (i = 0; i < SIZE); i++)
        printf("%d occured %d times\n", i, digit_count[i]);

   return 0;
}

最佳答案

使用malloc:

int main()
{
   int base = 10;
   int num, *digit_count;

   printf("Enter a number: ");
   scanf("%d", &num);

   digit_count = malloc (base * sizeof (int));
   if (!digit_count)
       return -1;

   while (num != 0)
   {
      digit_count[num % base]++;
      num /= base;
   }

   for (i = 0; i < base); i++)
        printf("%d occurred %d times\n", i, digit_count[i]);

   free(digit_count);
   return 0;
}

由于总是有十位数字,因此没有理由在此处使用动态内存分配,但如果需要分配的条目数在运行时发生变化,则此处使用的相同模式也同样有效。您可以在运行时更改base,并且程序仍然可以工作。

关于c - 如何将数组定义为数字字符串的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28715831/

相关文章:

c - 以 n 和 e 表示的最大正有限 IEEE 数?

c - 如何用C语言设计嵌入式软件应用库接口(interface)的通用向后兼容API?

c - linux 覆盖正在运行的二进制文件

array.filter() 中的 javascript 字符串比较问题

c - 如何将字符串分配给 C 中的字符指针?

c - 无法读取 C 中的字符

arrays - 3D 数组中的按维度逻辑索引

C编程,char*长度不能覆盖整个Array

c++ - 使用QT进程使用命令行从笔记本电脑获取传感器信息

c++ - 包装器是从 strcat_s() 到 strcat() 吗?如果没有,是否可以创建一个?