C本学习笔记scanf

一个、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不用加取地址符。数组名代表着地址。当输入字符串时不能有空格,否则会出现下图结果。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2FuZ3FpbnFpYW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >

能够看到,空格和空格以后的字符串都不会被接收,由于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! 结果例如以下:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2FuZ3FpbnFpYW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >

很多其它 %[] 信息。读者可以找到自己的信息

版权声明:本文博客原创文章。博客,未经同意,不得转载。

时间: 2024-10-19 01:35:41

C本学习笔记scanf的相关文章

[学习笔记]scanf弊端以及解决方案

1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<unistd.h> 4 5 int main(void) 6 { 7 char buf[10]; 8 //memset(buf, 0, 100); 9 //strcpy(buf, "hello world\n"); 10 //write(STDOUT_FILENO, buf, strlen(buf)); 11 12 read(STDIN_FILEN

黑马程序员-C学习笔记之scanf

---------------------- IOS开发.Android培训.期待与您交流! ---------------------- 一.scanf函数介绍 这也是在stdio.h中声明的一个函数,因此使用前必须加入#include<stdio.h>.调用scanf函数时,需要传入变量的地址作为参数,scanf函数会等待标准输入设备(比如键盘)输入数据,并且将输入的数据赋值给地址对应的变量. 函数原型为:int scanf(const char*format,...); 二.scanf用

2. 蛤蟆Python脚本学习笔记二基本命令畅玩

2. 蛤蟆Python脚本学习笔记二基本命令畅玩 本篇名言:"成功源于发现细节,没有细节就没有机遇,留心细节意味着创造机遇.一件司空见惯的小事或许就可能是打开机遇宝库的钥匙!" 下班回家,咱先来看下一些常用的基本命令. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/48092873 1.  数字和表达式 看下图1一就能说明很多问题: 加法,整除,浮点除,取模,幂乘方等.是不是很直接也很粗暴. 关于上限,蛤蟆不太清楚

Linux 程序设计学习笔记----POSIX 文件及目录管理

转载请注明:http://blog.csdn.net/suool/article/details/38141047 问题引入 文件流和文件描述符的区别 上节讲到ANSI C 库函数的实现在用户态,流的相应资源也在用户空间,但无论如何实现最终都需要通过内核实现对文件的读写控制.因此fopen函数必然调用了对OS的系统调用.这一调用在LINUX下即为open, close, read, write等函数.这些都遵循POSIX标准. so,在linux系统中是如何通过POSIX标准实现对文件的操作和目

poj1265&amp;&amp;2954 [皮克定理 格点多边形]【学习笔记】

Q:皮克定理这种一句话的东西为什么还要写学习笔记啊? A:多好玩啊... PS:除了蓝色字体之外都是废话啊...  Part I 1.顶点全在格点上的多边形叫做格点多边形(坐标全是整数) 2.维基百科 Given a simple polygon constructed on a grid of equal-distanced points (i.e., points with integer coordinates) such that all the polygon's vertices a

C51学习笔记

转自:http://blog.csdn.net/gongyuan073/article/details/7856878 单片机C51学习笔记 一,   C51内存结构深度剖析 二,   reg51.头文件剖析 三,   浅淡变量类型及其作用域 四,   C51常用头文件 五,   浅谈中断 六,   C51编译器的限制 七,                        小淡C51指针 八,                        预处理命令                        

后缀数组学习笔记【详解|图】

后缀数组学习笔记[详解] 老天,一个后缀数组不知道看了多少天,最后终于还是看懂了啊! 最关键的就是一会儿下标表示排名,一会用数值表示排名绕死人了. 我不知道手跑了多少次才明白过来.其实我也建议初学者手跑几遍,但是一定要注意数组的意义,否则就是无用功. 数组含义: s[ ]:输入的字符串,预处理的时候会在末尾加上一个0 sa[ ]:它的下标就是后缀排名 x[ ] = t[ ]:用来保存第一关键字排名,注意!它的数值是排名.初始时恰好是字符串的ASCII码.字典序嘛! y[ ] = t2[ ]:它的

《C Primer Plus》学习笔记——C预处理器和C库

1.在Unix系统中,尖括号告诉预处理器在一个或多个标准系统目录中寻找文件.双引号告诉预处理器先在当前目录(或文件名中指定的其他目录)中寻找文件,然后在标准位置寻找文件. 2.#undef指令:取消定义一个给定的#define #define LIMIT 400 #undef LIMIT 3.条件编译 #ifdef.#else和#endif指令 #ifdef 宏名 //语句段1 #else //语句段2 #endif 作用:当标识符已经被定义过(一般是用#define命令定义),则对语句段1进行

BZOJ 2120 数颜色&amp;2453 维护队列 [带修改的莫队算法]【学习笔记】

题意: 询问区间中不同颜色的个数,单点修改颜色 发现以前写的学习笔记没法看,于是重写一下(不就是会用latex了嘛) 额外维护一个当前修改操作执行到的时间 如果要进行某个查询操作,修改操作的时间必须移动到这个查询操作处 按照$(pos[l], pos[r], tim)$排序 令$S=N^{\frac{2}{3}}$, 有$N^{\frac{1}{3}}$块 $l$移动$N*N^{\frac{2}{3}}$次 $r$移动$N*N^{\frac{1}{3}}+N*N^{\frac{2}{3}}$次