为什么我会遇到细分错误:11?

时间:2019-03-02 07:27:22

标签: c segmentation-fault

我正在尝试学习c,所以我一直在试图弄清楚为什么最近2个小时我有细分错误;在纸上看起来代码应该可以工作。

因此,该过程的目的是要求用户输入堆中所需的大小,然后要求他们输入数字,但是数字必须唯一。

如果这是缩进的代码,请原谅,我仍然是初学者

int size ; // The size to allocate
int input ; // the number the user will enter from keyboard
int count  = 0 ; // how many numbers have been added


printf ("Enter the number of integers to process: \n");
scanf ("%d" , &size) ;
int* t;
int* c= (int*)malloc (size* sizeof (int));

if ((t = c))
while (count<size)
{
  printf("Enter value #%d\n" , count+1) ;
  scanf ("%d" , &input) ;

  if (count != 0)
  while (t<= t+count-1)
  {

      if (*t == input)
      {
         printf ("You have entered %d already\n", input);
         printf("Enter value #%d\n" , count+1) ;
         scanf ("%d" , &input) ;
         t = c ;
      }
    else
     t++;
  }

  t = c ;
  c[count] = input ;
  sum += c[count] ;
  count ++ ;
}

1 个答案:

答案 0 :(得分:3)

应该是 while (t<= c+count-1) 代替 while (t<= t+count-1) 后一种情况总是正确的。