Menu Close

printf()函数和scanf()函数的区别

变量值,变量名和变量地址
变量值,变量名和变量地址

scanf 的 长度修饰符 和 转换说明符 与 printf 几乎相同。主要的区别如下:

长度修饰符 :(可选项)对于 float 与 double 类型,printf() 的转换说明都用 f; 而对于 scanf() ,float 保持不变,double 要在 f 前加长度修饰符 l ,即:lf

例 1

#include<stdio.h>

int main(void) {

   double a = 3.0;
   double b;

   scanf("%lf", &b); // 把键盘输入的数字赋值给a
   printf("%lf\n", a);
   printf("%lf", b);
   return 0;
}
15
3.000000
15.000000

scanf 函数遵循什么规则来识别整数或浮点数呢?

在要读入整数时,scanf 函数首先会寻找正号或负号,然后从读入一个数字开始直到读入一个非数字为止。

当要求读入浮点数时,scanf 函数首先会寻找正号或负号(可选),然后是一串数字(可能含有小数点),再后是一个指数(可选)。指数由一个字母e,可选的符号,一个或多个数字组成。

当 scanf 函数遇到一个不可能输入当前项的字符时,它会把此字符“放回原处”,以便在扫描下一项或下一次调用 scanf 时再次读入。

易混淆的 printf() 与 scanf()

  1. printf("%d", &i);

    输出的并不是 i 的值 (而是 i 的地址的十进制数值)

  2. scanf("%d, %d", &i, &j);

    scanf 在第一个 %d 读入一个整数后,试图把逗号与输入流中的下一个字符相匹配,如果这个字符不是 ,,那 scanf 就会终操作,而不再读取变量 j 的值。

  3. scanf("%d\n", &i);

    printf 函数中经常有 \n ,但是如果在 scanf 格式串结尾放一个 \n 通常会引发你预期之外的问题。

    对于 scanf 函数来说,\n 等同于空格,那么 scanf 就会在流中寻找空白字符,但是我们上面说过,scanf 格式串中的空白字符会与 输入流中的零个或多个空白字符匹配。所以当你输入完成后按下回车,这个回车会与 scanf 中的 \n 匹配,之后你无论打多少回车都不会使 scanf 结束,除非你输入一个非空字符,使 scanf 因匹配失败而退出。

 

READ  C语言IF语句和IF ELSE语句
除教程外,本网站大部分文章来自互联网,如果有内容冒犯到你,请联系我们删除!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Leave the field below empty!

Posted in C语言教程

Related Posts