我正在尝试使用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;
}
由于 %d
之间的 ,
。
删除
scanf("%d %d",&day, &month);
分段故障正在发生:result += array[month-2];
两个原因可能导致您的案例分割故障
-
month
小于1:您的遗嘱进入循环,array
的索引小于0。 -
month
大于12:在这种情况下,array
中的索引大于11。
解决方案:在您的主要功能中,您需要检查月份是否在范围内。