【问题标题】:printf not outing thing read from scanfprintf 不是从 scanf 读取的东西
【发布时间】:2016-06-06 05:01:24
【问题描述】:

scanf 可以读取最佳有符号十进制、八进制或十六进制输入,但 printf 无法输出所述读取输入?还是有其他一些我不知道也没有使用的说明符。

示例代码

scanf("%i", &x);     //enter 0150 (octal)                     
printf("%i ",x);     //outputs 104(decimal)

【问题讨论】:

  • 阅读printf 的手册页。它有一个所有转换说明符的列表。
  • 那些说明符是特定的,但我想知道是否有一个说明符包含 3 个说明符
  • %i 可以读取最佳有符号十进制、八进制或十六进制,并且参数指向一个 int。
  • @vvid 不,因为 C 不是面向对象的语言,所以变量 x 除了值之外不包含任何信息。您需要选择要用于显示该值的格式。
  • @chux,该死的,我的立场是正确的。我的printfscanf 交换了。

标签: c


【解决方案1】:

是的,还有另一个说明符。你应该读成字符串,写你读到的,以准确地写你读到的。

char x[100];
scanf("%99s", x);
printf("%s ", x);

【讨论】:

  • 不错的答案,但实际上不是数字的数据类型可能存在一些问题。由于它位于 char 数组中,有些人可能会发现很难使用其他数值数据操作/操作 char 数组。不过,这是一个很好的答案。
【解决方案2】:

看这里,printf 没有分别识别“%i”和“%d”。但它在scanf 中标识。 也请下次正确写出问题:)

这些链接可能对您有所帮助-

  1. Difference between format specifiers %i and %d in printf

  2. Octal to Decimal in C

  3. http://www.tutorialspoint.com/cprogramming/c_type_casting.htm

【讨论】:

    【解决方案3】:

    猜想没有说明符可以做 %i 可以在 scanf 中做的事情,我不确定是否有,但 ichan 确认没有说明符

    【讨论】:

      【解决方案4】:

      您可能会发现此参考对您有用:

      printf
      http://www.cplusplus.com/reference/cstdio/printf/

      scanf
      http://www.cplusplus.com/reference/cstdio/scanf/


      编辑:
      没有单一的说明符,一种尺寸适合所有人。您应该知道要打印什么,并使用特定的说明符来完成工作。

      【讨论】:

      • 输入未知,由用户确定。但我明白了,如果没有一种尺寸适合所有人,那我就不走运了
      • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
      • @Magisch 我已经从链接中添加了答案。我正在使用图像,因为 Stack Overflow 不支持 html 标记。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多