Я фиксирую некоторый пользовательский ввод и сохраняю его как в struct, так и в файл.
Для каждого поля я сначала пишу приглашение с использованием 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);
Я тестировал его на двух компьютерах с Windows, используя Dev-C ++ , и на 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;