c - printf 不产生输入值

标签 c printf scanf format-specifiers

我有以下代码块。最后一行旨在生成用户输入的 XYP 值。但它只返回

(0,0,0)

而不是用户给出的值。我错过了什么?

printf("What is the robot's initial X position? (cm)\n");
scanf("%f",&X);
printf("What is the robot's initial Y position? (cm)\n");
scanf("%f",&Y);
printf("What is the robot's initial angular position? (degrees)\n");
scanf("%f",&P);
printf("The initial position is (%d, %d, %d)\n", X,Y,P);

最佳答案

假设XYP的类型为doublefloat (输入部分scanf()),您需要使用%f%lf格式说明符(如需要)打印(或扫描)值。

  • 要打印floatdouble,需要使用%f
  • 扫描float时,使用%f,扫描double时,使用%lf

对特定格式说明符使用错误类型的参数是 undefined behaviour%d 需要一个 int 参数。因此,在您的情况下,使用 %d 作为 floatdouble 类型的参数是 UB。

关于c - printf 不产生输入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43147336/

相关文章:

c - 如何只读取 typedef 结构中的第一个参数?

c - 需要对带有指向字符串文字的指针数组的指针算术进行解释

c++ - 有没有 printf 的替代品?

c - 在 C 中为用户输入字符串指定数组大小是否重要?

c - 当我在 C 中询问矩阵的第二个数字时,为什么会换行要求我介绍一个数字?

c - 为什么在 C 中返回给定错误的语句?

在C中计算一些递归函数

c - strtok() 作为 printf() 中的参数反向打印值

c - strcpy 和 printf 多维字符数组 C

c - 从标准输入读取整数并保存它们 - C