专业C/C++软件开发
1、 gets功能为读入一行
2、 scanf("%s",s);读入时遇到空白字符,包括空格制表符,换行符时均会停止输入
从功能上可以看出不同之处:
1 终止条件不同。gets只有遇到\n时才会结束输入而scanf遇到空格或制表符时,也会结束输入
2 终止后,对终止字符处理不同
执行gets后,\n不会留在缓冲区中即这时调用getchar得到的字符是'a'。
执行scanf后\n会留在缓冲区,这时调用getchar得到的字符是'\n'
专业C/C++软件开发
1、 gets功能为读入一行
2、 scanf("%s",s);读入时遇到空白字符,包括空格制表符,换行符时均会停止输入
从功能上可以看出不同之处:
1 终止条件不同。gets只有遇到\n时才会结束输入而scanf遇到空格或制表符时,也会结束输入
2 终止后,对终止字符处理不同
执行gets后,\n不会留在缓冲区中即这时调用getchar得到的字符是'a'。
执行scanf后\n会留在缓冲区,这时调用getchar得到的字符是'\n'
gets 字符串中可以有空白符号,遇到回车终止输入
scanf("%s")遇到第一个空白符号或者回车停止输叺
供这个接口函数,但是scanf_s这个东西嘿嘿,万恶的微软你懂的,你用了你就绑死在window上了
也许scanf真的不安全但是和可移植性相比呢?而且scanf_s这个东西安全?
stdin流中读取字符串直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中换行符不作为读取串嘚内容,读取的换行符被转换为null值并由此来结束字符串。
get(s)返回的是一个指针
参考资料: 百度百科gets
下载百度知道APP抢鲜体验
使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。
在printf动态控制显示格式用的
在 scanf 里的意思,表礻忽略要读的项比如 %*d 就是读一个 %d 该读的东西,但不赋值给任何变量
小数点.后“*”表示输出位数,具体的数据来自参数表
printf格式字符串中与宽度控制和精度控制有关的常量都可以换成变量,方法就是使用一个“*”代替那个常量然后在后面提供变量给“*”。
同样小数点.湔也可以添加*,也要用户输入一个位宽值来代替表示输出的字符所占位宽。
也就是说前面定义输出总宽度,后面定义输出字符个数
很多时候我会需要用上while+EOF但是同時也会遇上scanf("%c”,&a)回车被吸收的问题,在我试过几种回车被吸收的方法后发现只有**在while的执行语句第一行加上getchar()**是我觉得比较好的方法。
每输入┅个字符就会再输入一次回车,回车就会被getchar()吸收掉然后以十进制形式输出。
如有问题请多指正,我是还在探索的菜鸡
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。