程序给我分段错误,没有线索为什么

时间:2017-03-11 15:19:38

标签: c segmentation-fault

我正在尝试使用C编程并实现一个函数,该函数通过输入日期来计算当前年份的天数。但是,它一直给我一个分段错误。任何人都可以帮忙吗?

#include <stdio.h>

int datum2int(int day, int month){
  int result=0;
  int array[]={31,28,31,30,31,30,31,30,31,30,31,30};

  while((month-1)!=0){
    result += array[month-2];
    month--;
  }

  result +=day;
  return result;
}


int main(){
  int day,month;    
  scanf("%d, %d",&day, &month);
  printf("%d", datum2int(day, month));

  return 0;
}

2 个答案:

答案 0 :(得分:2)

由于,之间的%d,您会收到seg错误。

删除它

scanf("%d %d",&day, &month);

答案 1 :(得分:1)

分段错误发生在这里:result += array[month-2];

在您的情况下,有两个原因会导致分段错误

  1. month小于1:您将进入循环,array的索引将小于0.
  2. month大于12:在这种情况下,array中的索引大于11。
  3. 解决方案:在您的主要功能中,您需要检查月份是否在范围内。