:first-child { margin-top: 0; } blockquote > :last-child { margin-bottom: 0; } img { border: 0; max-width: 100%; height: auto !important; margin: 2px 0; } table { border-collapse: collapse; border: 1px solid #bbbbbb; } td, th { padding: 4px 8px; border-collapse: collapse; border: 1px solid #bbbbbb; } @media only screen and (-webkit-max-device-width: 1024px), only screen and (-o-max-device-width: 1024px), only screen and (max-device-width: 1024px), only screen and (-webkit-min-device-pixel-ratio: 3), only screen and (-o-min-device-pixel-ratio: 3), only screen and (min-device-pixel-ratio: 3) { html, body { font-size: 17px; } body { line-height: 1.7; padding: 0.75rem 0.9375rem; color: #353c47; } h1 { font-size: 2.125rem; } h2 { font-size: 1.875rem; } h3 { font-size: 1.625rem; } h4 { font-size: 1.375rem; } h5 { font-size: 1.125rem; } h6 { color: inherit; } ul, ol { padding-left: 2.5rem; } blockquote { padding: 0 0.9375rem; } }
-->

div{font-size:15px;}.wiz-table-tools .wiz-table-menu-item.active .wiz-table-menu-sub {display: block}.wiz-table-tools .wiz-table-menu-sub:before, .wiz-table-tools .wiz-table-menu-sub:after {position: absolute;content: " ";border-style: solid;border-color: transparent;border-bottom-color: #cccccc;left: 22px;margin-left: -14px;top: -8px;border-width: 0 8px 8px 8px;z-index:10;}.wiz-table-tools .wiz-table-menu-sub:after {border-bottom-color: #ffffff;top: -7px;}.wiz-table-tools .wiz-table-menu-sub-item {padding: 4px 12px;font-size: 14px;}.wiz-table-tools .wiz-table-menu-sub-item.split {border-top: 1px solid #E0E0E0;}.wiz-table-tools .wiz-table-menu-sub-item:hover {background-color: #ececec;}.wiz-table-tools .wiz-table-menu-sub-item.disabled {color: #bbbbbb;cursor: default;}.wiz-table-tools .wiz-table-menu-sub-item.disabled:hover {background-color: transparent;}.wiz-table-tools .wiz-table-menu-item.wiz-table-cell-bg:hover .wiz-table-color-pad {display: block;}.wiz-table-tools .wiz-table-color-pad {display: none;padding: 10px;box-sizing: border-box;width: 85px;height: 88px;background-color: #fff;cursor: default;}.wiz-table-tools .wiz-table-color-pad > div{font-size:15px;}.wiz-table-tools .wiz-table-color-pad .wiz-table-color-pad-item {display: inline-block;width: 15px;height: 15px;margin-right: 9px;position: relative;}.wiz-table-tools .wiz-table-color-pad .wiz-table-color-pad-item i.pad-demo {position: absolute;top:3px;left:0;}.wiz-table-tools .wiz-table-color-pad .wiz-table-color-pad-item .icon-oblique_line{color: #cc0000;}.wiz-table-tools .wiz-table-color-pad .wiz-table-color-pad-item:last-child {margin-right: 0;}.wiz-table-tools .wiz-table-color-pad .wiz-table-color-pad-item.active i.editor-icon.icon-box {color: #448aff;}.wiz-table-tools .wiz-table-cell-align {display: none;padding: 10px;box-sizing: border-box;width: 85px;height: 65px;background-color: #fff;cursor: default;}.wiz-table-tools .wiz-table-cell-align .wiz-table-cell-align-item {display: inline-block;width: 15px;height: 15px;margin-right: 9px;position: relative;}.wiz-table-tools .wiz-table-cell-align .wiz-table-cell-align-item:last-child {margin-right:0}.wiz-table-tools .wiz-table-cell-align .wiz-table-cell-align-item i.valign{position: absolute;top:3px;left:0;color: #d2d2d2;}.wiz-table-tools .wiz-table-cell-align-item.active i.editor-icon.valign {color: #a1c4ff;}.wiz-table-tools .wiz-table-cell-align-item.active i.editor-icon.icon-box,.wiz-table-tools .wiz-table-cell-align-item.active i.editor-icon.align {color: #448aff;}.wiz-table-tools .wiz-table-color-pad .wiz-table-color-pad-item:last-child,.wiz-table-tools .wiz-table-cell-align .wiz-table-cell-align-item:last-child {margin-right: 0;}th.wiz-selected-cell, td.wiz-selected-cell {background: rgba(0,102,255,.05);}th:before,td:before,#wiz-table-col-line:before,#wiz-table-range-border_start_right:before,#wiz-table-range-border_range_right:before{content: " ";position: absolute;top: 0;bottom: 0;right: -5px;width: 9px;cursor: col-resize;background: transparent;z-index:100;}th:after,td:after,#wiz-table-row-line:before,#wiz-table-range-border_start_bottom:before,#wiz-table-range-border_range_bottom:before{content: " ";position: absolute;left: 0;right: 0;bottom: -5px;height: 9px;cursor: row-resize;background: transparent;z-index:100;}.wiz-table-container {}.wiz-table-body {position:relative;padding:0 0 10px;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;}.wiz-table-body table {margin:0;outline:none;}td,th {height:28px;word-break:break-all;box-sizing:border-box;outline:none;}
-->

 
【1】putchar
 
格式: putchar( c )
参数: c常量、变量或表达式
功能:把字符c输出到标准输出上
返值:正常,为显示的代码值;也就是字符的ascii
 
 
【2】getchar
 
格式:getchar( void )
功能:从标准输入上读一字符
返值:正常,返回读取的代码值;出错,返回EOF(-1)
 
1--- 从终端获取一个字符
2--- 吃掉一个垃圾字符
       什么时候吃掉? 
    一般是在这个时候前面是什么无所谓,关键是你在下一个scanf前面按了回车键而你的这个scanf又是接收字符串的。那就废了。原因分析如下,当你按下回车键的时候后面又是接收字符串的scanf或者是getchar他们由于要读取缓冲区里面的内容就会把这个回车都取到,而回车有恰恰是结束都取,所以就会直接结束!而如果你的后面的scanf不是读取字符比如你读取的是%d,那就不存在问题。还有就是如果你的下一次读取是字符串也是没关系的,因为在%s也是会过滤掉前面的空格 回车的。为什么不存在问题?那是因为整形输入会忽略之前的空格、回车,并且以之后的空格、回车作为输入整形结束的标志。还有就是不要有误区:不要认为你printf输出空格会影响scanf这完全是俩回事,因为printf输出的东西是在输出文件流而你在输入缓冲区。还有一种情况就是人家要求你输入整形数据%d,但是你偏偏要输入字符型数据,这时,这个字符型并不会被scanf读取走,下一次读取就会出现问题
这个时候缓冲区里面已经是上一次字符的ascii码了,可以读取了。就会出错。
 
【3】printf
 
格式:printf(“格式控制串”,输出表)
功能:按指定格式向显示器输出数据
返值:正常,返回输出字节数;出错,返回EOF(-1)  比如 120 返回值就是3 ; 123\n 返回值是 4.
 
 
1--- 数据类型的控制
%d  %o   %x   %u
%f
%c
%p打印数据在内存中的地址(使用取地址符:&)
 
3---字符串
%s要求传递一个地址量(字符串常量当作地址量处理)
遇到'\0'结束输出;
.n对字符串,指定实际输出位数
 
2--- 格式控制
m输出数据域宽,数据长度<m,左补空格
.n对实数,指定小数点后位数(四舍五入)
-输出数据在域内左对齐(缺省右对齐)
+指定在有符号数的正数前显示正号(+)
0输出数值时指定左面不使用的空位置自动填0
#在八进制和十六进制数前显示前导0,0x
 
 
【4】scanf
 
格式: scanf(“格式控制串”,地址表)
功能:按指定格式从键盘读入数据,存入地址表指定存储单元中,并按回车键结束
返值:正常,返回从标准输入成功获取数据的个数 也就是输入几个数
 
1--- 数据类型的控制
%d  %o   %x   %u
%f
%c
%p//打印数据存储的地址
 
2--- 格式间隔符为:空格、换行符、无间隔可通用
 
3--- 字符串
char a[10] = {'a','b','c','d','\0'};
scanf("%s",a);
printf("%s\n",a);
 
//数组名是数组的首元素的地址
//%[^\n]
 
 
【5】puts
int puts(char * s);
 
1--- char * //要求你传递一个地址量,char型数据的地址量
2--- 默认带换行,遇‘\0’字符结束输出;
4--- 返回值:返回输出字节数 注意+1有/0.
 
 
【6】gets
char * gets(char *)
 
1--- 功能:从键盘输入一以回车结束的字符串放入字符数组中,并自动在末尾加‘\0’
2--- 遇'\n'代表结束输入
3--- 返回值:存放字符串的首地址,
 
 
 
【7】sqrt
函数:sqrt() 开方数学函数
头文件:#include <math.h>
链接库操作:gcc 1.c -lm
 
 
 
【8】if
if (表达式) 
{语句块1}                            
else
{语句块2}
 
关于scanf的若干问题 /若干陷阱
 
[cpp] view plaincopy 
其实对于scanf的若干问题就是围绕输出控制符 %d ,%c和%s
他们之间有什么联系和区别且看下面。
当我们在读取一个整形数字的时候我们会用%d来读取。这毫无疑问。而且我们都知道此时的%d是过滤空白符的无论你如何输入都可以过滤掉,你是喜欢输入一个空格一下 还是输入一个回车一下无所谓。都可以完整接收到。但是在%c中似乎问题就没那么简单了,如果你在%d的时候你直接输入回车没关系,它会过滤掉。但是在c%可是不会的,如果你在输入的时候第一次就输入回车,那废了。程序完美结束。究其原因是:因为在读取字符的时候它会把回车也当作字符(还是合理的。回车也是字符)读入后就结束了。这也是我们常常谈的一个问题,要注意吃掉回车字符。什么意思那?就是上一条语句结束的时候我们按了一个回车,下一条语句如果是getchar或者是scanf那这个空格就会被读入。而我们无法输入。解决这个问题的方法是什么?
基本就是用一个getchar吃掉我们上一次的输入,或者是我们用一个特殊的方法就是在前面加一个空格。scanf(“  %d”,&a)或者getchar( a)都是可以的,为什么前面加个空格就可以了?空格也是scnaf的控制符,它的意思就是过滤空格,回车,TAB,Newline等等空白符。明白了吧。但是这也要注意 比如你今天敲代码打了个 scanf(“%d%d%d ”,&a,&b,&c)那废了你要是按回车根本没用。因为后面有过滤。
%s我们来谈谈,%s遇到空格就结束了对字符串的读取。你如果想输入 hellow word 那单纯的%s是不行的。这个一般就用puts  默认带换行。或者在scanf中用%[^\n]也可以实现。
 
下面是我从网上摘录的一小段
1. 
2. #include <stdio.h>  
3. 
4. int main (void)   
5. {  
6.     int i ;  
7.     char ch ;  
8.       
9.     scanf("%d",&i) ;  
10.     scanf(" %c",&ch) ;  //这行的%C前有个空格  
11.     printf("i = %d\nch = %c\n", i, ch) ;   
12.       
13.     /*  输入100 y 后的输出结果: 
14.         i = 100 
15.         ch = y */  
16.       
17.     return 0 ;  
18. }  
       有些朋友或许会有疑问,为什么 scanf(" %c",&ch) 中的%c 前面要加一个空格,空格的作用到底是什么…在这里可以告诉大家,%c前面的空格就是用来屏蔽空白符的,但想要弄明白这个问题,必须要知道C语言 scanf() 函数的特性,以及scanf()与缓冲区、标准输入流之间的联系。 但在此之前,我们先介绍两个专业术语。
1、缓冲区
   缓冲区是一块存放临时输入数据的内存,我们在键盘上输入数据之所以不会马上显示,就是因为数据存放在了缓冲区,在上面例子中,当我们按下回车键后,缓冲区的数据会传送到标准输入流。
2、标准输入流
   标准输入流(stdin)是文件指针,scanf()就是从标准输入流获取数据。 在以后的文章中,会接触到fscanf函数的介绍中详细解释。
   以上面代码为例,当执行到scanf()时,开始等待用户输入,当我们输入数据,在按下回车键前会把数据储存在缓冲区,按下回车键后,会把数据以及换行符(\n)一起传送到标准输入流(stdin)中,scanf()就是从标准输入流中或许数据,上面第一个scanf()要读入一个整数,它从标准输入流中查找,跳过空白符(空格、换行符、制表符),如果遇到数字,则开始读入,直到遇到非数字的字符结束,最后计算读取到的数值,储存到相关变量中。
   如果能理解上面一段话,那么你应该知道%c前空格的作用了,如果不能,请看看%c前不加空格程序的输出结果。
[cpp] view plaincopy1. #include <stdio.h>  
2.   
3. int main (void)   
4. {  
5.     int i ;  
6.     char ch ;  
7.       
8.     scanf("%d",&i) ;  
9.     scanf("%c",&ch) ;  
10.     printf("i = %d\nch = %c\n", i, ch) ;   
11.       
12.     /*  输入100 : 
13.         i = 100 
14.         ch = */  
15.       
16.     return 0 ;  
17. }  
   请看上面的程序,我们输入100后,咦,怎么程序中止了,马上输入结果了? 但真的是终止了吗?别忘了,标准输入流中除了100外,还有一个换行符'\n'。 第一次scanf()读取了100后,把'\n'留在了标准输入流,第二个scanf()就从输入流中获取换行符了,由于scanf()函数的特性,空白符直接忽略,因此程序便结束了,第二个scanf()函数看似失效,实际上是执行完毕了。
 
 所以对于scanf()而言,%c是个较为特殊的说明符。 %c前没空格,scanf()将读取标准输入流中的第一个字符,%c前有空格,scanf()则读取标准输入流中第一个非空白字符。读到这,大家应该理解了吧?
 
原因何在,在%前面加一个空格就这么有用,答案是肯定的,就是%前面的空格在起作用,读者看看此文章的前面部分,在scanf的使用过程中应注意的问题中已经指出:“scanf()的格式控制串可以使用空白字符或其它非空白字符,使用空白字符会使scanf()函数在读操作中略去输入中的一个或多个空白字符。”   所以在%前面加上了空格(空格属于空白字符,此外还有像制表符等也属于空白字符),在输入过程中,将略去输入中的一个或多个空白字符,所以我们输入的0 1 2 3 4 5 6 7 8 9这些字符中的空白字符就被略去了,字符9也就正确的打印出来了,这样子解释,相信大家都看明白勒吧
 
 
其实对于scanf的若干问题就是围绕输出控制符 %d ,%c和%s
他们之间有什么联系和区别且看下面。
当我们在读取一个整形数字的时候我们会用%d来读取。这毫无疑问。而且我们都知道此时的%d是过滤空白符的无论你如何输入都可以过滤掉,你是喜欢输入一个空格一下 还是输入一个回车一下无所谓。都可以完整接收到。
但是在%c中似乎问题就没那么简单了,如果你在%d的时候你直接输入回车没关系,它会过滤掉。但是在c%可是不会的,如果你在输入的时候第一次就输入回车,那废了。程序完美结束。究其原因是:因为在读取字符的时候它会把回车也当作字符(还是合理的。回车也是字符)读入后就结束了。这也是我们常常谈的一个问题,要注意吃掉回车字符。什么意思那?
就是上一条语句结束的时候我们按了一个回车,下一条语句如果是getchar或者是scanf那这个空格就会被读入。而我们无法输入。解决这个问题的方法是什么?
基本就是用一个getchar吃掉我们上一次的输入,或者是我们用一个特殊的方法就是在前面加一个空格。scanf(“  %d”,&a)或者getchar( a)都是可以的,为什么前面加个空格就可以了?空格也是scnaf的控制符,它的意思就是过滤空格,回车,TAB,Newline等等空白符。
明白了吧。但是这也要注意 比如你今天敲代码打了个 scanf(“%d%d%d ”,&a,&b,&c)那废了
你要是按回车根本没用。因为后面有过滤。
%s我们来谈谈,%s遇到空格就结束了对字符串的读取。你如果想输入 hellow word 那单纯的%s是不行的。

 

C语言第3天标准的输入输出函数的更多相关文章

  1. C语言学习笔记(三) 输入输出函数的基本用法以及运算符

    printf() ——将内容输出到显示器上 四种用法 1.printf("字符串");   直接输出字符串 2.printf("输出控制符",输出参数); 3. ...

  2. 忙里偷闲( ˇˍˇ )闲里偷学【C语言篇】——(3)输入输出函数

    一.基本的输入和输出函数的用法 1.printf()  //屏幕输出 用法: (1)printf("字符串\n"); (2)printf("输出控制符", 输出 ...

  3. c语言的输入输出函数

    参考文章: http://blog.sina.com.cn/s/blog_784f40b80100psg9.html C语言输入输出函数分为两类: 1.格式化输入输出函数 2.非格式化输入输出 --- ...

  4. C语言中输入输出函数

    1.1.1 格式化输入输出函数Turbo C2.0 标准库提供了两个控制台格式化输入. 输出函数printf() 和scanf(), 这两个函数可以在标准输入输出设备上以各种不同的格式读写数据.pri ...

  5. c语言输入输出函数

    上学年学习c语言的时候比较匆忙,没好好吸收. 现在有时间好好复习下. 本文就c语言常见输入函数进行简单介绍,对比. ps:由于自己能力有限,时间有限,多数介绍,总结都是摘录网上相关学习资料,下面给出本 ...

  6. C语言中最常用的三种输入输出函数scanf()、printf()、getchar()和putchar()

    本文给大家介绍C语言中最常用的三种输入输出函数scanf().printf().getchar()和putchar(). 一.scanf()函数格式化输入函数scanf()的功能是从键盘上输入数据,该 ...

  7. C语言——输入输出函数

    0.getchar().putchar() 输入缓冲区,键盘输入是"行缓冲"遇到一个换行符的时候清空缓冲区. 标准流,stdin和stdout,是标准的输入输出流,键盘输入就是用的 ...

  8. C语言中最常用标准库函数

    标准头文件包括: <asset.h>      <ctype.h>       <errno.h>       <float.h> <limits ...

  9. C语言学习<输入输出函数,函数的调用>

    #include <stdio.h> /* 输入输出函数的学习 函数的调用 2017.05.25 soulsjie */ //输入连个数字求最大值 void main(){ int Max ...

随机推荐

  1. URAL 1416 Confidential(次小生成树)

    题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1416 Zaphod Beeblebrox — President of the Impe ...

  2. Microsoft.Jet.OLEDB.4.0和Microsoft.ACE.OLEDB.12.0的区别

    Microsoft.Jet.OLEDB.4.0和Microsoft.ACE.OLEDB.12.0的区别 时间 2012-12-19 20:30:12  CSDN博客原文  http://blog.cs ...

  3. Verilog篇(二)系统函数

    显示任务:$display,$write, 前者总会输出一个换行符,后者不会.固定输出格式版:$displayb/$displayo/$displayh/$writeb/$writeo/$writeh ...

  4. 利用curl并发来提高页面访问速度

    在我们平时的程序中难免出现同时访问几个接口的情况,平时我们用curl进行访问的时候,一般都是单个.顺序访问,假如有3个接口,每个接口耗时500毫 秒那么我们三个接口就要花费1500毫秒了,这个问题太头 ...

  5. div内的img下出现几像素的空白间距解决办法

    现象描述: 解决方法: 1.设父元素的font-size:0; 2.设img为display:block; 3.设img为vertical-align:middle;

  6. spring的定时任务

    maven中引入quartz的jar包依赖 单纯针对时间的设置规则org.springframework.scheduling.quartz.CronTriggerBean允许你更精确地控制任务的运行 ...

  7. Android横竖屏切换继续播放视频

    只需要重新onSaveInstanceState方法,在其里面记住我们要记录的参数 package com.bawei.day07_videoview; import android.os.Bundl ...

  8. struts2 笔记03 异常支持、防止页面刷新和后退、方法验证

    Struts2对异常支持(声明式异常.自动的异常处理), 异常处理(运行期异常事务自动回滚) 1. 自定义异常类,继承RuntimeException或Exception实现构造方法. 2. 配置异常 ...

  9. iOS 学习笔记 五 (2015.03.17)使用storyBoard进行tableview的跳转

    方法一: 点击tableviewCell后,按住ctrl键拖拽至想要跳转的新的界面.这样跳转的结果是,点击tableview中的任何一行都会跳转到新的界面.可以通过控制cell的 属性 userInt ...

  10. 在centos6.5-64bit上安装wxHexEditor,以查看编译二进制文件

    目前在做一个存储,磁盘里面的数据老是出现很诡异的地方,某个通道的录像播放到一半的时候,切换到另外一个通道的视频上去了,一直不知道怎么下手,想着用十六进制编辑器查看磁盘数据. sudo yum inst ...