【发布时间】:2021-01-04 05:07:25
【问题描述】:
我编写了提示用户输入数字的代码,然后告诉该数字的哪些数字是重复的。
虽然编译没有问题,但运行时显示分段错误(核心转储)。
代码:
#include <stdio.h>
int main(void)
{
int n=0;
int digit[n];
int t;
for (int num = 0;num<10;num++)
{
digit[num] = 0;
}
scanf("%d",&t);
int y=t;
int c = 0;
do
{
c++;
y = y/10;
}while(y>0);
int ko;
for (int no=0;no<c;no++)
{
ko = t%10;
digit[ko]++;
t=t/10;
}
int count = 0;
for (int co = 0;co<10;co++)
{
if (count>0)
printf(" ");
if (digit[co]>1)
{
printf("%d",co);
count ++;
}
}
}
【问题讨论】:
-
int n=0; int digit[n];创建一个可以存储 0 个元素的数组。至少需要int digit[10]; -
int n=0; int digit[n];但为什么呢?
标签: c segmentation-fault