C语言的格式化输入函数scanf

scanf是C语言的标准输入输出库stdio中提供的库函数,所以在使用它时,需要使用预处理指令#include <stdio.h>包含stdio.h头文件。

scanf的功能是根据由格式化字符串表示的特定格式读取输入。输入参数包括格式化字符串和用以存储输入的变量地址。变量地址(指针)的个数没有限制,但要保证格式化字符串中的转换说明的数量和类型与对应位置的输入变量一致。

  scanf(格式化字符串, 变量地址1,变量地址2...)

格式化字符串中包含普通字符和转换说明。调用scanf函数时,从左边开始依次处理格式化字符串中的信息。

格式化字符串中的普通字符

处理格式化字符串中的普通字符时,scanf函数的处理方式因字符为空白字符而不同:

  • 空白字符。如果在格式化字符串中遇到一个或多个连续空白字符,scanf函数会从输入缓冲区中重复读空白字符,直到遇到一个非空白字符为止,并且把该非空白字符放回输入缓冲区,供下次读取。
/************************************
 * using_scanf_1.c                  *
 *                                  *
 * 格式化字符串的空白字符           *
 ************************************/

#include <stdio.h>

int main()
{

  int x1 = 0;
  scanf("  %d", &x1);

  int x2 = 0;
  scanf(" %d", &x2);

  int x3 = 0;
  scanf("%d", &x3);


  printf("x1 = %d, x2 = %d, x3 = %d\n", x1, x2, x3);
  return 0;
}

空白字符
- 其他字符。如果在格式化字符串中遇到一个非空白字符,scanf函数将把它与下一个输入字符进行比较。如果两者匹配,则放弃输入字符并继续处理格式化字符串的后续内容;若不匹配,则将该字符放回输入缓冲区,异常退出,不继续处理剩下的格式化字符串。

/*********************************
 * using_scanf_2.c               *
 *                               *
 * 格式化字符串中的非空白字符        *
 *********************************/

#include <stdio.h>

int main()
{
  int x1 = 0;
  scanf("x1 = %d", &x1);

  printf("x1: %d\n", x1);

  /**********************************
   *scanf函数执行完成后,会忽略最后 *
   *的换行符,留由下一次scanf调用时 *
   *读取。因此这里调用scanf函数时第 *
   *一个字符为\n,所以要把\n作为转换*
   *说明中的第一个字符              *
   **********************************/
  scanf("\nx1 = %d", &x1);

  printf("x1: %d\n", x1);

  return 0;
}
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值