scanf 函数

scanf函数的功能:通过键盘输入字符给代码中的变量赋值(比指定i赋一个定值要灵活)

原型:

# include <stdio.h>
int scanf(const char *format, ...)

 

1、scanf("输入控制符",输入参数):

举例:

#include<stdio.h>

int main(){

int i ;

printf("please enter your number: \n");

scanf("%d", &i ); //&i 表示变量 i 的地址,&是取地址符

printf("i = %d ", i );
return 0;
}

 

以上程序输入控制符是scanf里的%d(整型数据),输出控制符是printf里的%d,所以输入控制符合输出控制符是一样的。

%d解释:

我们从键盘输入的都是字符,比如从键盘输入123,操作系统并不会将它当做数字来处理,而是字符’1‘,’2‘,’3‘,这个时候需要用控制字符将其转化一下:%d在上面程序就是控制字符,将接收的字符’1‘,’2‘,’3‘转化成对应的整型数字123。

&取地址符解释:

“&”是取地址运算符,“&”后面加变量代表“该变量的地址”,&i代表取变量i的地址,相当于将数据存到以变量i的地址为地址的变量中,所以程序中的 结果就是将123存储到变量i中.

所以scanf语句的意思就是:从键盘输入123,然后%d将123转化成十进制123,

最后通过取地址i,找到变量i的地址,再将123存入到以变量i为变量的地址为地址的变量中,即变量i中,所以最终的结果i=123.

2、例2:

# include <stdio.h>

int main(void)

{

int i;

scanf("i = %d", &i);

printf("i = %d\n", i);

return 0;

}

 在printf 中,所有的“非输出控制符”都要原样输出。同样,在 scanf 中,所有的“非输入控制符”都要原样输入。

所以在输入的时候“i=123”要原样输入,少一个i或者“=”都不行,否则就会报错。

在scanf中\n不起换行的作用,至于为何不起作用,参考:
https://blog.csdn.net/weiweicsdn1/article/details/52185453

在 scanf 的使用中:双引号内永远都不要加“非输入控制符”。除了“输入控制符”之外,什么都不要加。

3、scanf 函数的输入控制符的个数和参数的个数一定要一致,有几个输出控制符就应该有几个参数。

同样printf函数的输出控制符的个数和参数也要一致。

举例:

#include<stdio.h>

int main(){

int a,b ;

printf("please enter your number: \n");

scanf("%d%d", &a );

printf("a = %d ,b = %d ", a,b );
return 0;
}
以上程序在执行的时候输入控制符少了一个,所以在xcodeblock输出的结果是i = 222408758.

4、scanf中从键盘输入的数据类型要和输入控制符,变量所定义的类型一致

举例:

# include <stdio.h>
int main(void)
{
    int i = 97;
    printf("i = %c\n", i);
    return 0;
}

已上程序输出 i = a;

因为printf支持输出控制符”的类型可以与数据的类型不一致。

但是在scanf中,键盘输入的数据类型、输入控制符、变量所定义的类型要一致,在xcodeblock中执行如下程序:

# include <stdio.h>

int main(void)

   int i;
    scanf("%d", &i);
    printf("i = %d\n", i);
    return 0;

}

输入:a,

输出:i = ?

就会发现该程序中输入的数据类型与scanf输入控制符类型不一致,导致无法实现我们需要的功能。

5、scanf之前用printf提示输入内容

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

int main()
{
    int i, j;
    printf("请输入两个值,中间以空格分隔:\n");
    scanf("%d%d", &i, &j);
    printf("i = %d, j = %d\n", i, j);
    return 0;
}
以上5点是scanf使用过程中需要注意的点。

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值