我捕獲一些用戶輸入並將其保存到結構和文件。爲什麼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