【问题标题】:Use of % in scanf and printf [duplicate]在 scanf 和 printf 中使用 % [重复]
【发布时间】:2014-08-29 16:48:27
【问题描述】:

%scanfprintf 中的确切用途是什么? scanfprintf 在没有 % 标志的情况下可以工作吗?我只能找到% 是转换说明符,但我想知道它实际上是如何工作的?

【问题讨论】:

  • 你尝试了什么?你在哪里搜索的?您阅读了哪些内容丰富、免费提供的文档?
  • printf 可以在没有% 符号的情况下工作。如果您不想要格式化输出。例如。 printf("Hello Sunny");
  • 你的意思是你想要一个与其他人提交的作业不匹配的重写?
  • 感谢大家的意见。

标签: c scanf


【解决方案1】:

% 只是用于标识格式字符串中转换说明符开头的符号;为什么% 而不是任何其他符号是一个悬而未决的问题,并且可能没有那么有趣的答案。 printfscanf 函数在格式字符串中搜索转换说明符,告诉它们预期的附加参数的数量和类型,以及如何格式化输出(对于 printf)或解释输入(对于 scanf )。

要打印文字%,您需要使用%%

printf 可以在不使用转换说明符的情况下工作,但您将仅限于编写文字字符串。 scanf 没有它就毫无用处。

【讨论】:

    【解决方案2】:

    '%' 字符用于标准标头<stdio.h>scanf()print() 类函数的格式字符串,以指示占位符 用于多种可变数据。例如,格式说明符 "%d" 是类型为int 的值的占位符。

    因此,可变参数函数printf() 期望将附加参数作为参数传递给函数,其中第一个参数的类型为int

    这个int 参数的值被转换为字符串,并将替换为占位符"%d"

    scanf() 的情况下,情况类似,但现在scanf() 是一个输入函数,它期望用户在命令行中输入一个与所指示的类型相匹配的值格式说明符。因此,格式说明符"%d" 将期望用户输入int 类型的值。

    由于 C 中的所有参数都是按值传递的,因此输入数据需要您使用变量的地址,以模仿 按引用 传递参数的模式.

    有很多与这些格式说明符相关的选项和详细信息。
    你需要看一下参考书目。
    例如,从维基百科开始:

    printf() format string
    scanf() format string

    【讨论】:

      【解决方案3】:

      scanf()printf() 中的% 是一个关键字,其目的是识别将存储在命名变量中的数据类型。因此,在以下示例中,编译器将构建指令以接受整数类型的输入数据并将其存储在分配给num1 的地址的内存位置中:

      int num1;
      scanf("%d",&num1);
      

      【讨论】:

        猜你喜欢
        • 2017-07-06
        • 2021-12-04
        • 2016-05-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-06
        • 2016-06-14
        • 1970-01-01
        相关资源
        最近更新 更多