일부 사용자 입력을 캡처하여 구조 및 파일에 저장합니다.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++를 사용하여 두 개의 윈도우 PC에서 그것을 테스트하고 맥 사용하여 GCC에. Windows 시스템 중 하나가이 모든 혼란을 일으키는 시스템입니다.
정확한 실행 (사용자 입력을 포함)이다
color: red
energy: 100
height: 30.5
weight: 500.0
그러나 번잡 컴퓨터
, I 입력 에너지 값 후, 아무것도 표시하지 않고, I는 입력 높이 값이 계속. 그 후 , 나는 무게를 캡처하여 높이와 무게 프롬프트 마무리 참조 : 파일이 너무 모든 경우에 올바르게 기록color: red
energy: 100
30.5
height:
weight: 500.0
을, 왜 scanf
및 printf
만 하나의 컴퓨터 데 문제가 무엇입니까?
구조체의 정의는 다음과 같습니다 나는 사용자가 입력하라는 메시지가 표시되고 전에 stdout
플러시되지와의 문제를 추측하고
typedef struct roboto
{
char name[10];
char color[10];
int energy;
float height;
float weight;
}robot;
다른 제안 사항이 있습니까? 왜 이것이 단지 1 대의 컴퓨터에서 발생하는지에 대한 아이디어가 있습니까? – ghopper3
해당 컴퓨터에서 다른 컴파일러 또는 OS를 사용하고 있습니까? – GWW