首页 > 代码库 > 黑马程序员-C学习笔记之scanf
黑马程序员-C学习笔记之scanf
---------------------- IOS开发、Android培训、期待与您交流! ----------------------
一、scanf函数介绍
这也是在stdio.h中声明的一个函数,因此使用前必须加入#include<stdio.h>。调用scanf函数时,需要传入变量的地址作为参数,scanf函数会等待标准输入设备(比如键盘)输入数据,并且将输入的数据赋值给地址对应的变量。
函数原型为:int scanf(const char*format,...);
二、scanf用法
这里从键盘接收一个整形数存放到变量age中。当接收多个数时,可以这样用:
这里要注意的是,在输入时可以输入一个数回车后再输入一个数,也可以输入一个数空格再输入另一个数回车。但是如果是这样的又不一样,
scanf("%d,%d", &age, &age2);
scanf中的两个格式化参数是用逗号隔开的,所有同时输入两个数就要用逗号分隔而不再是空格,你可能注意到规律了,scanf中格式化参数是用什么分隔的在输入数时,要一次回车输入的话就要用什么分隔。
对字符的用法也同样适用。
接收一个字符,存放到字符变量a中,同时输入多个字符也适用上面的用法。
三、字符串的接收
从键盘输入的字符串放到指定数组中如下:
注意:这里的的str不用加取地址符,数组名代表着地址,当输入字符串时不能有空格,否则会出现下图结果。
可以看到,空格和空格以后的字符串都不会被接收,因为scanf函数在遇到空格或回车时会返回。看看下面的你也许就明白了:
scanf在两个参数中间是空格分隔的,遇到第一个空格就返回把空格前面的字符串存放到str中,再把空格后面的字符串存放到str2中。
那么按小桥的说法是不是用scanf接收字符串就不能包含空格了呢?但是有时一个字符串中确实有空格,答案是否定的,因为scanf的高级功能可以解决这个问题。
四、%[]格式控制符
scanf的%[]格式控制符能够控制函数什么时候返回。如:
第二句和第一句的格式化参数不同,什么意思呢?%[^\n]表示的是除了\n符外,接收所有字符,也就是函数遇到回车才返回 ^是取反的意思。同样输入 i love oc! 结果如下:
更多 %[] 的信息,读者可以自行查找资料
---------------------- IOS开发、Android培训、期待与您交流! ---------------------- 详细请查看:www.itheima.com
一、scanf函数介绍
这也是在stdio.h中声明的一个函数,因此使用前必须加入#include<stdio.h>。调用scanf函数时,需要传入变量的地址作为参数,scanf函数会等待标准输入设备(比如键盘)输入数据,并且将输入的数据赋值给地址对应的变量。
函数原型为:int scanf(const char*format,...);
二、scanf用法
#import <stdio.h> int main() { int age; // 接收输入的值赋给age age2 scanf("%d", &age); printf("age=%d\n", age); return 0; }
这里从键盘接收一个整形数存放到变量age中。当接收多个数时,可以这样用:
#import <stdio.h> int main() { int age; // 接收输入的值赋给age age2 scanf("%d", &age); printf("age=%d\n", age); return 0; }
这里要注意的是,在输入时可以输入一个数回车后再输入一个数,也可以输入一个数空格再输入另一个数回车。但是如果是这样的又不一样,
scanf("%d,%d", &age, &age2);
scanf中的两个格式化参数是用逗号隔开的,所有同时输入两个数就要用逗号分隔而不再是空格,你可能注意到规律了,scanf中格式化参数是用什么分隔的在输入数时,要一次回车输入的话就要用什么分隔。
对字符的用法也同样适用。
char a; scanf("%c",&a); printf("a=%c", a);
接收一个字符,存放到字符变量a中,同时输入多个字符也适用上面的用法。
三、字符串的接收
从键盘输入的字符串放到指定数组中如下:
// 字符串数组 char str[10]; // 接收字符串 scanf("%s", str);
注意:这里的的str不用加取地址符,数组名代表着地址,当输入字符串时不能有空格,否则会出现下图结果。
可以看到,空格和空格以后的字符串都不会被接收,因为scanf函数在遇到空格或回车时会返回。看看下面的你也许就明白了:
// 字符串数组 char str[10]; char str2[10]; // 接收字符串 scanf("%s %s", str, str2); printf("%s\n%s", str, str2);
scanf在两个参数中间是空格分隔的,遇到第一个空格就返回把空格前面的字符串存放到str中,再把空格后面的字符串存放到str2中。
那么按小桥的说法是不是用scanf接收字符串就不能包含空格了呢?但是有时一个字符串中确实有空格,答案是否定的,因为scanf的高级功能可以解决这个问题。
四、%[]格式控制符
scanf的%[]格式控制符能够控制函数什么时候返回。如:
scanf("%s", str); // 接收的字符串中没有空格 scanf("%[^\n]", str2); // 接收包含空格的字符串
第二句和第一句的格式化参数不同,什么意思呢?%[^\n]表示的是除了\n符外,接收所有字符,也就是函数遇到回车才返回 ^是取反的意思。同样输入 i love oc! 结果如下:
更多 %[] 的信息,读者可以自行查找资料
---------------------- IOS开发、Android培训、期待与您交流! ---------------------- 详细请查看:www.itheima.com
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。