%*c %*s printf scanf !!!

来源:互联网 发布:唱歌什么软件好 编辑:程序博客网 时间:2024/04/20 03:48

说实话,我原来把这两个函数给记错了,导致我在编译的时候出现了严重的错误,为了纪念我的错误,我决定把这个擦操作写一下心得,让我以后不再犯同样的错误。



scanf 和 printf 这两个函数是进行标准输入输出的;


scanf("%*s");

scanf("%*c");

在这里,scanf 函数中的格式声明是不一样的,与原来的不同,只要在%和s或者是c中间加上*(星号) 就代表这

这个格式输入不需要参数,


例如


如果输入 1 a 2

输出结果  1  2


中间的a 就没有给任何的变量,你可以理解为这个a 放在了输入缓冲区中,但是经过 %*c 操作他在输入缓冲区中

剔除了,也可以理解%*c 就是把输入缓冲区中的前一个字母取走了,但是在这里无论你怎么想,都不要忘记

这个操作只能取走一个字母,一个符号,多了是不行的。


scanf ("%*s");

通过上面的分析应该很快的就理解了,这个符号的意思,同是一个scanf 函数,只是一个字母变化了,他们的功能的

相思度应该是很高的,说出他的功能之前,我想先举个例子 :




这是两个不同方式的输入,但是这里面要注意的东西还是比较多的,首先这里的%*s 是代表消除掉输入缓冲区中的

一串字母或者是符号,在这里就不一样了,消除一串,那用什么来标记一串呢,后来发现,和普通的字符串一样

通过空格,回车,来停止读入,这样的方法在这里也是同样适用的。




printf("%*c") 和  printf("%*s");

这两个操作函数一起说就可以,因为功能实在是太像了,由于这是一个输出函数,和之前的输入函数的功能就不一样了,刚才的输入函数,取出的数据都是在输入缓冲区中的,这里的输出函数要进行的是输出操作,所以,他的功能就是和输出相关的

这两个函数和 printf ("%nd");是相似的,前者能控制有一个宽度,后者是不能动态的控制宽度的,

例如 :


其实这个printf 函数还有这样的用法呢!!!


0 0
原创粉丝点击