我正试图在公历上创建一个程序,但是当我尝试将月份名称分配给字符串if in else block以及switch case时,代码块在运行时停止响应。交换机内部字符串的分配或如果else块
int main()
{
int month,year;
scanf("%d %d",&month,&year);
char month1[10];
if(month==1)
month1[10]="January";
else if(month==2)
month1[10]="February";
else if(month==3)
month1[10]="March";
else if(month==4)
month1[10]="April";
else if(month==5)
month1[10]="May";
else if(month==6)
month1[10]="June";
else if(month==7)
month1[10]="July";
else if(month==8)
month1[10]="August";
else if(month==9)
month1[10]="September";
else if(month==10)
month1[10]="October";
else if(month==11)
month1[10]="November";
else if(month==12)
month1[10]="December";
printf("%s %d",month1,year);
return 0;
}
同样,当我习惯在开关的情况下分配的字符串值,那么原因是什么,也发生了运行时错误
main()
{
int month,year;
scanf("%d %d",&month,&year);
char month1[15];
switch(month)
{
case 1:
month1[15]="January";
break;
case 2:
month1[15]="February";
break;
case 3:
month1[15]="March";
break;
case 4:
month1[15]="April";
break;
case 5:
month1[15]="May";
break;
case 6:
month1[15]="June";
break;
case 7:
month1[15]="July";
break;
case 8:
month1[15]="August";
break;
case 9:
month1[15]="September";
break;
case 10:
month1[15]="October";
break;
case 11:
month1[15]="November";
break;
case 12:
month1[15]="December";
break;
default:
printf("wrong input");
}
printf("%s %d",month1,year);
//char calender[6][7];
}
?
首先,你溢出你的数组;月数组的最大索引是9或14,具体取决于您的代码版本。而且,你不能以这种方式分配字符串。你声明一个字符数组,而不是一个字符数组的数组。 –