我捕获一些用户输入并将其保存到结构和文件。为什么scanf会改变执行顺序?
对于每个字段,我首先使用printf
编写提示,然后使用scanf
将数据捕获到结构,最后使用fprintf
写入文件。
该程序工作正常,但只在一台计算机上,其中一个scanf
在其相应的printf
之前执行。
这里是问题的核心:
printf("\n color: ");
scanf("%s",&robot1.color);
fputs(robot1.color, f);
fputs("\n",f);
printf("\n energy: ");
scanf("%d",&robot1.energy);
fprintf(f,"%d",robot1.energy);
fputs("\n",f);
printf("\n height: ");
scanf("%f",&robot1.height);
fprintf(f,"%.2f",robot1.height);
fputs("\n",f);
printf("\n weight: ");
scanf("%f",&robot1.weight);
fprintf(f,"%.2f",robot1.weight);
fputs("\n",f);
我测试使用Dev-C++两个Windows PC和Mac上使用GCC。其中一台Windows机器是造成这一切混乱的原因之一。
正确的执行(包括用户输入)是:
color: red
energy: 100
height: 30.5
weight: 500.0
但在麻烦的电脑,之后我输入的能量值,这说明不了什么,并继续我必须输入高度值。 之后,我看到了身高和体重的提示,并完成通过捕捉重量:
color: red
energy: 100
30.5
height:
weight: 500.0
该文件是在所有情况下使编写正确,为什么只有scanf
和printf
有麻烦一台电脑?
结构定义是:
typedef struct roboto
{
char name[10];
char color[10];
int energy;
float height;
float weight;
}robot;
它没有工作,任何其他建议?任何想法为什么这只发生在1台电脑上? – ghopper3
您是否在该计算机上使用不同的编译器或操作系统? – GWW