【问题标题】:printf not giving me the correct output, maybe scanf is to blame, advice pleaseprintf 没有给我正确的输出,也许 scanf 是罪魁祸首,请指教
【发布时间】:2020-08-25 00:20:44
【问题描述】:

编写代码以接受用户输入,例如 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);
}

【问题讨论】:

  • 对于初学者,请始终检查 scanf 的返回值。代码不完整。请提供minimal verifiable example 以及准确的输入、预期结果和实际结果。

标签: c function printf scanf


【解决方案1】:

如果你写scanf("%c", &input);,那么这将从先前输入的新行中读入input。这通常不是您想要的。

因此,写scanf(" %c", &input);(注意%c之前的空白)以跳过空格。

进一步注意%c 只会读入一个字符;如果您打算阅读P0,则需要一个字符串,例如char[3] 和格式说明符 %s。

【讨论】:

  • 好的,我会试一试
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-23
相关资源
最近更新 更多