=========C语言的输入与输出===========

%-9d : d:以十进制输出,9表示至少占用9个字符的宽度,宽度不足以空格补齐,-表示左对齐。综合起来,%-9d 表示以十进制输出,左对齐,宽度最小为9个字符。

printf() 格式控制符的完整形式如下:

%[flag][width][.precision]type

type: 表示输出类型,比如%d ,%f %c 等。

width表示最小输出宽度,也就是至少占用几个字符的位置,当输出结果的宽度不足width 时,以空格补齐,如果没有指定对齐方式,默认会在左边补齐空格,当输出结果的宽度超过width时,width不再起作用,按照数据本身的宽度来输出。

.precision表示输出精度,也就是小数的位数。

当小数部分的位数大于precision 时,会按照四舍五入的原则丢掉多余的数字;

当小数部分的位数大于precision 时,会在后面补0.

flag : 标志字符。例如:%#x中flag 对应#,%-9d 中flags 对应-。下面列出了printf() 可以利用的flag:

 - : 表示左对齐。如果没有就按照默认的对齐方式,默认一般为右对齐。

 +:用于整数或者小数,表示输出符号(正负号)。如果没有,那么只有负数才会输出符号。空格:用于整数或者小数,输出值为正时冠以空格,为负时冠以负号。

#:对于八进制(%o) 和十六进制(%x / %X)整数,# 表示在输出时添加前缀;八进制的前缀是0,十六进制的前缀是 0x / 0X 。

  对于小数(%f / %e / %g), # 表示强迫输出小数点。如果没有小数部分,默认是不输出小数点的,加上# 以后,即使没有小数部分也会带上小数点。

==========使用scanf 读取从键盘输入的数据(含输入格式汇总表)====

scanf(): 和printf() 类似,scan()可以输入多种类型的数据。

getchar()、getche()、cetch(): 这三个函数都用于输入单个字符。

gets(): 获取一行数据,并作为字符串处理。

scanf 是scan format 的缩写,意思是格式化扫描,也就是从键盘获得用户输入,和printf d的功能正好相反。

scanf("%d %d", &a,&b);  //获取用户输入的两个整数,分别赋值给变量a和变量b .

scanf 的变量前要带一个&符号。& 称为取地址符,也就是获取变量在内存中的地址。

scanf() 不会跳过不符合要求的数据,遇到不符合要求的数据会读取失败,而不是再继续等待用户输入。

====代码演示====

#include<stdio.h>

int main(){

  char letter;

  int age;

  char url[30];

  float price;

  scanf("%c",&letter);

  scanf("%d",&age);

  scanf("%s", &url);  //可以加& 也可以不加&

====对读取字符串的说明====

char str1[] = “123456789”;

char *str2 = "C 语言中文网";

  这两种形式其实是有区别的,第一种形式的字符串所在的内存既有读取权限又有写入权限,第二种形式的字符串所在的内存只有读取权限,没有写入权限。printf() 、puts()等字符串输出函数只要求字符串有读取权限,而scanf()、gets() 等字符串输入函数要求字符串有写入权限,所以,第一种形式的字符串既可以用于输出函数又可以用于输入函数,而第二种形式的字符串只能用于输出函数。

  另外,对于第一种形式的字符串,在[]里卖弄要知名字符串的最大长度,如果不知名,也可以根据赋值号后面的字符串来自动推算,此处,就是根据后面的长度来进行推算的。但是在前一个例子中,开始我们只是定义了一个字符串,并没有立即给它复制,所以没法自动推算,只能手动指明最大长度,这也就是为什么一定要协作url[30],而不能写作char url[] 的原因。

  上面我们说过,scanf() 读取数据时需要的是数据的地址,整数、小数、单个字符都要&取地址符,这很容易理解,但是对于此处的url 字符串,我们并没有加&,这是因为,字符串的名字会自动转换为字符串的地址,所以就不用加&了。

  scanf() 读取字符串时以空格为分割,遇到空格就认为当前字符串结束了,所以无法读取含有空格的字符串。

  #include<stdio.h>

int main()

{

  char author[30],lang[30],url[30];

  scanf("%s, %s",author,lang);

}

===

getchar() ,它是scanf("%c",c)的替代品,只是简洁。

getche() , 它没有缓冲区,输入一个字符后会立即读取,不用等待用户按下回车键,这就是它和scanf() 、getchar() 的最大区别。

注意: getche() 位于 conio.h 投文件中,这个头文件是windows特有的,Linux和MacOS 下没有包含该投文件。

getch() : getch() 也没有缓冲区,输入一个字符后会立即读取,不用按下回车键,这一点和getche() 相同。getch() 的特别之处是它没有回显,看不到输入的字符,酒啊后向没有输入一样。在输入密码时,我们就不希望有回显。

注意:getch() 和getche() 一样,也位于conio.h 头文件中,也不是标准函数,默认只能在windows下使用。

  gets() 是有缓冲区的,每次按下回车键,就代表当前输入结束了,gets()开始从缓冲区读取内容,这一点和scanf() 是一样的,gets 和scanf() 的主要区别是:

  gets() 能读取含有空格的字符串,而scanf() 不能。

}

C语言入门第四章的更多相关文章

  1. C 语言入门第五章--循环结构和选择结构

    C语言中有三大结构,分别是顺序结构.选择结构和循环结构: 逻辑运算: 与运算: && 或运算:|| 非运算:! ==== #include<stdio.h> int mai ...

  2. Unity 2D游戏开发高速入门第1章创建一个简单的2D游戏

    Unity 2D游戏开发高速入门第1章创建一个简单的2D游戏 即使是如今,非常多初学游戏开发的同学.在谈到Unity的时候.依旧会觉得Unity仅仅能用于制作3D游戏的. 实际上.Unity在2013 ...

  3. TYUT程序设计入门第四讲练习题题解--数论入门

    程序设计入门第四讲练习题题解--数论入门 对于新知识点的学习,需要不断地刷题训练,才能有所收获,才能更好地消化知识点. 题组链接: 程序设计入门第四讲练习题--数论 by vjudge 题解: A. ...

  4. Kotlin入门第四课:简单工厂模式

    Kotlin基础知识的学习,请参考之前的文章: Kotlin入门第一课:从对比Java开始 Kotlin入门第二课:集合操作 Kotlin入门第三课:数据类型 初次尝试用Kotlin实现Android ...

  5. JavaMail入门第四篇 接收邮件

    上一篇JavaMail入门第三篇 发送邮件中,我们学会了如何用JavaMail API提供的Transport类发送邮件,同样,JavaMail API中也提供了一些专门的类来对邮件的接收进行相关的操 ...

  6. C 语言入门第十二章---C语言文件操作

    C语言具有操作文件的能力,比如打开文件.读取和追加数据.插入和删除数据.关闭文件.删除文件等. 在操作系统中,为了同意对各种硬件的操作,简化接口,不同的硬件设备也都被看成一个文件.对这些文件的操作,等 ...

  7. C语言学习第四章

    今天学习C语言循环结构,为什么要用循环呢?因为有时候我们对一堆的数字进行重复的处理的时候要重复的编写一些相同或者差不多的代码,让程序显得很臃肿,而且写着也麻烦,如果用循环来写的话能简化很多,出错的话也 ...

  8. CTF---Web入门第四题 Forms

    Forms分值:10 来源: Ph0enix 难度:易 参与人数:4945人 Get Flag:2776人 答题人数:2824人 解题通过率:98% 似乎有人觉得PIN码是不可破解的,让我们证明他是错 ...

  9. CTF---密码学入门第四题 困在栅栏里的凯撒

    困在栅栏里的凯撒分值:10 来源: 北邮天枢战队 难度:易 参与人数:4531人 Get Flag:2124人 答题人数:2285人 解题通过率:93% 小白发现了一段很6的字符:NlEyQd{sef ...

随机推荐

  1. windows 域控用户记住最后一次登录用户名

    1,记住最后一次登录用户名 运行 gpedit.msc命令 禁用设置

  2. Vue.js开发去哪儿网WebApp

    一.项目介绍 这个项目主要参考了去哪儿网的布局,完成了首页.城市选择页面.详情页面的开发. 首页:实现了多区域轮播的功能,以及多区域列表的展示: 城市选择页面:在这个页面实现了城市展示.城市搜索.城市 ...

  3. VBA 学习笔记 - 消息框

    学习资料:https://www.yiibai.com/vba/vba_macro_comments.html 注释 单引号或 REM 开头 丸子:多行注释咋办? 消息框(MsgBox) 函数功能:显 ...

  4. dfs & bfs总结

    dfs 最简单的三种形式递归总结 bfs 百度https://baike.baidu.com/item/%E5%AE%BD%E5%BA%A6%E4%BC%98%E5%85%88%E6%90%9C%E7 ...

  5. 语义化标签&唯一性标签

    语义化标签 em\i表示倾斜,b\strong表示加粗,但其中只有strong和em具有着重的语义 img:alt属性当图片无法显示,显示alt的文字,根本需求是为了SEO,是必须属性,alt属性长度 ...

  6. pandas help

    1. read_csv read_csv方法定义: pandas.read_csv(filepath_or_buffer, sep=', ', delimiter=None, header='infe ...

  7. BUUCTF知识记录

    [强网杯 2019]随便注 先尝试普通的注入 发现注入成功了,接下来走流程的时候碰到了问题 发现过滤了select和where这个两个最重要的查询语句,不过其他的过滤很奇怪,为什么要过滤update, ...

  8. scrapy中使用 IP 代理

    在 scrapy 中使用 ip 代理需要借助中间件的功能 首先在settings 中设置好中间件,中间件优先级数字越小越先被执行 , } 然后编写中间件,拦截请求设置代理 class ProxyMid ...

  9. selenium webdriver 屏幕滚动

    //山寨法 String setscroll = "document.documentElement.scrollTop=100"; JavascriptExecutor jse= ...

  10. nginx防盗链处理模块referer和secure_link模块

    使用场景:某网站听过URI引用你的页面:当用户在网站点击url时:http头部会通过referer头部,将该网站当前页面的url带上,告诉服务本次请求是由这个页面发起的 思路:通过referer模块, ...