printf не дает мне правильного вывода, возможно, виноват scanf, посоветуйте, пожалуйста - PullRequest
0 голосов
/ 09 мая 2020

Написание кода для приема пользовательского ввода, такого как P0 x1 y1, для хранения во вложенной структуре в виде точки, и то же самое с двумя другими точками. Однако при вводе с помощью scanf и проверке printf я не получаю правильные числа, например, scanf читает что-то еще, совет будет отличным, спасибо!

float x, x2, y, y2;
char Q, input;

nested triangle;

scanf("%c", &input);

if (input == 'Q' || input =='q')
  return;

else
  {
  scanf(" %c %f%f",&input, &triangle.P0.x, &triangle.P0.y);
  printf("points are\n%f \n%f \n", triangle.P0.x, triangle.P0.y);
}

scanf("%c", &input);

if (input == 'Q' || input =='q')
  return;

else
  {
  scanf(" %c %f%f",&input, &triangle.P1.x, &triangle.P1.y);
  printf("points are\n %f \n%f \n",input, triangle.P1.x, triangle.P1.y);
}

1 Ответ

1 голос
/ 09 мая 2020

Если вы напишете scanf("%c", &input);, то это будет читать с новой строки из предыдущего ввода в input. Обычно это не то, что вы намереваетесь.

Поэтому пишите scanf(" %c", &input); (обратите внимание на пробел перед %c), чтобы пропустить пробелы.

Обратите внимание, что %c будет просто читать в одном персонаже; если вы собираетесь читать в P0, вам нужна строка, например char[3] и спецификатор формата %s.

...