私はいくつかのユーザー入力をキャプチャして、構造体とファイルの両方に保存しています。scanfが実行順序を変更するのはなぜですか?
フィールドごとに、まずprintf
を使用してプロンプトを書き込み、scanf
を使用して構造体にデータをキャプチャし、最後にfprintf
を使用してファイルに書き込みます。
プログラムは正常に動作しますが、1台のコンピュータでのみ、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++を使用して2台のWindows PC上でそれをテストし、Mac上でGCCを使用。 Windowsマシンの1つが、この混乱の原因となるものです。
正しい実行は、(ユーザー入力を含む)である:
color: red
energy: 100
height: 30.5
weight: 500.0
しかし、面倒なコンピュータで
、I入力エネルギー値の後に、それは何も示していない、と私は入力に高さの値を持って継続します。その後 は、私は体重を捕捉することによって、身長と体重促し、そしてフィニッシュを参照してください。color: red
energy: 100
30.5
height:
weight: 500.0
ファイルがそのように、すべての場合に正しく書かれている、なぜ1台のコンピュータのみがscanf
とprintf
とのトラブルをしていますか?
構造体の定義は次のとおりです。
typedef struct roboto
{
char name[10];
char color[10];
int energy;
float height;
float weight;
}robot;
これはうまくいかず、他の提案はありますか?なぜこれがちょうど1台のコンピュータで起こるかの考えですか? – ghopper3
そのコンピュータで別のコンパイラまたはOSを使用していますか? – GWW