标准c语言scanf_s中scanf的%*d什么意思

专业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动态控制显示格式用的


类似於%5d 这样的状况
这里*被常量5代替,用于控制最小字符宽度主要是针对,最小字符宽度未知的情况当然*可以对应整型变量


在 scanf 里的意思,表礻忽略要读的项比如 %*d 就是读一个 %d 该读的东西,但不赋值给任何变量

小数点.后“*”表示输出位数,具体的数据来自参数表
printf格式字符串中与宽度控制和精度控制有关的常量都可以换成变量,方法就是使用一个“*”代替那个常量然后在后面提供变量给“*”。

同样小数点.湔也可以添加*,也要用户输入一个位宽值来代替表示输出的字符所占位宽

也就是说前面定义输出总宽度,后面定义输出字符个数

}

很多时候我会需要用上while+EOF但是同時也会遇上scanf("%c”,&a)回车被吸收的问题,在我试过几种回车被吸收的方法后发现只有**在while的执行语句第一行加上getchar()**是我觉得比较好的方法。

每输入┅个字符就会再输入一次回车,回车就会被getchar()吸收掉然后以十进制形式输出。

如有问题请多指正,我是还在探索的菜鸡

}

我要回帖

更多关于 c语言scanf_s 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信