scanf(格式控制字符串,参数地址表)

#include <stdio.h>
#include <stdlib.h>

int main()
{   //scanf(格式控制字符串,参数地址表);
    int a,b;
    //Ane request:空格符 is space character
    scanf("%d %d",&a,&b);
    printf("a=%d,b=%d",&a,&b);
    //Two request:逗号 is space character input:3 4 out put a=3,b=39
    scanf("%d,%d",&a,&b);
    printf("a=%d,b=%d",&a,&b);
    //Three request:input date 字符串"a="和"b="原样输入,即input a=12,b=34
    scanf("a=%d,b=%d",&a,&b);
    printf("a=%d,b=%d",&a,&b);
    //Four demand  input date限定以下格式1234 同时输出结果a=12,b=34
    scanf("%2d%2d",&a,&b);
    printf("a=%d,b=%d",a,b);
    //Five require 输入数据限定格式12\n34,同时要求程序输入结果为a="12",b="34",该如何
    scanf("%2d%2d",&a,&b);
    printf("a=\"%d\",b=\"%d\"\n",a,b);
    //Six claim 若用户可用任意字符作为分隔符输入数据,
    //*为抑制字符称忽略输入修饰符使得对应的输入项在读入后不赋给任何变量,
    //%c表示以字符型格式输入,%*c表示读入用户键盘键入的字符,但是不赋值给任何变量
    scanf("%d%*c%d",&a,&b);
    printf("a=%d,b=%d\n",a,b);
    //Seven require 用户输入123456
    //%*2d 中*为忽略修饰符,表示对应输入项34在读入后不赋值给任何变量
    //%2d中2位域宽附加格式说明,表示从输入数据中按指定宽度2从输入缓冲区截取输入数据
    scanf("%2d%*2d%2d",&a,&b);
    printf("a=%d,b=%d",a,b);
    //Eight claim 用户输入非法字符12 3a output a=12,b=3
    scanf("%d%d",&a,&b);
    printf("a=%d,b=%d",a,b);
    //Nine: request input:123a output:a=123,b=39
    //explain:函数scanf()未能读入指定的数据项数,怎么判断?通过scanf的返回值EOF 需了解if-else
    scanf("%d%d",&a,&b);
    printf("a=%d,b=%d",a,b);
    //Ten:demand scanf函数未加取地址运算符&
    //编译器误将a值与b值当做地址值,使得数据视图存入这两个地址单元,从而造成非法访问
    //而真正的地址&a,&b内存单元并未被存入数据,即变量a,b未被赋值。
    scanf("%d%d",a,b);
    printf("a=%d,b=%d",a,b);
    //NOTIC:如果函数scanf()的格式控制字符串中存在除格式说明符以外其他字符,
    //那么这些字符必须在输入数据时,由键盘原样输入。
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值