请回答情况3中的double有什么问题??测试用例 3 它给出了运行时错误.. 其他用例工作正常我无法弄清楚 scanf 中的问题是什么,它从用户那里获得双重输入。
#include<stdio.h>
#include<stdlib.h>
int main()
{
char x[30]={0}, ch_type[30]={1};
int ch=1,idx=0,cond_var2=0,temp=0, choice=0;
int curr_arr_size=0, arr_size=sizeof(x);
while(ch)
{
printf("\n\n1.Create a character \n2.create a number \n3.create a double \n4.current status \n0.exit\n");
printf("\nenter the choice:\t");
scanf("%d",&choice);
switch(choice)
{
case 0:
exit(0);
break;
case 1:
if ((arr_size-curr_arr_size)>=sizeof(char))
{
ch_type[idx++]=sizeof(char);
printf("\n enter the character:\t");
fflush(stdin);
scanf("%c",(x+curr_arr_size));
curr_arr_size=curr_arr_size+sizeof(char);
}
else
printf("no space for any characters.\n");
break;
case 2:
if ((arr_size-curr_arr_size)>=sizeof(int))
{
ch_type[idx++]=sizeof(int);
printf("\n enter the integer:\t");
scanf("%d",(x+curr_arr_size));
curr_arr_size=curr_arr_size+sizeof(int);
}
else
printf("no space for any integer.\n");
break;
case 3:
if ((arr_size-curr_arr_size)>=sizeof(double))
{
ch_type[idx++]=sizeof(double);
printf("\n enter the double:\t");
scanf("%lf",(x+curr_arr_size));
curr_arr_size=curr_arr_size+sizeof(double);
}
else
printf("no space for any doubles.\n");
break;
case 4 :
while(cond_var2<idx)
{
if(ch_type[cond_var2]==sizeof(char))
printf("\n%d value is %c",cond_var2+1,*(x+temp));
if(ch_type[cond_var2]==sizeof(int))
printf("\n%d value is %d",cond_var2+1,*(x+temp));
if(ch_type[cond_var2]==sizeof(double))
printf("\n%lf value is %c",cond_var2+1,*(x+temp));
temp=temp+ch_type[cond_var2];
cond_var2++;
}
printf("\nnumber of the bytes free:\t%d",arr_size-curr_arr_size);
break;
default :
ch=0;
printf("\nWrong choice\n");
break;
}
printf("arsize:%d\ncur_size:%d\n\n",arr_size,curr_arr_size);
}
return 0;
}