gpt4 book ai didi

c - 如何使用 char 取 double 值..使用字符数组

转载 作者:太空宇宙 更新时间:2023-11-04 02:54:35 24 4
gpt4 key购买 nike

请回复案例 3 中 double 的问题是什么??测试用例 3 给出运行时错误..其余案例工作正常我无法弄清楚 scanf 中的问题是什么,它将用户的输入作为 double。

#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;
}

最佳答案

编译器(至少是 gcc)告诉你所有你必须知道的:

x.c:66:17: warning: format ‘%lf’ expects argument of type ‘double’, but argument 2 has type ‘int’ [-Wformat]

printf("\n%lf value is %c",cond_var2+1,*(x+temp));

你切换了参数,你需要转换:

printf("\n%d value is %lf",cond_var2+1,*(double*)(x+temp));

注意:还有更多警告,请修复这些...

关于c - 如何使用 char 取 double 值..使用字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19005710/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com