现在的位置: 首页 > 综合 > 正文

在C语言中关于scanf函数的高级应用

2013年10月05日 ⁄ 综合 ⁄ 共 1006字 ⁄ 字号 评论关闭
或许我有点多余,但是看到有很多人问起这件事情,我也不得不再提起这个函数
实际上在c语言中,最难的不是指针,而是scanf和printf这两个函数,在这里我只介绍高级内容。
c语言没有输入输出语句,他的输入输出全部是靠函数实现,而且输入输出流分为三种:
stdio,stdout,stderr
在scanf("%c")和scanf(" %c")中(注意第二个的空格)这个空格的作用是屏蔽/0因为在我们的输入系统中,最初输入的数据是在键盘缓冲区,当他遇到/0(也就是回车键)时会将缓冲区的内容和/0一起往stdin流输入。据一个例子:
下面的系统模拟银行零币兑换系统
#include<stdio.h>
main()
{
   char c;
   printf("请输入你要兑换的零币(该系统每次能兑换的最小数额为5美分)/n");
   printf("你是否还需要进行兑换?(y/n)");
   scanf("%c",&c);
   while(c=='y'||c=='Y')
  {
      if(c=='y'||c=='Y')printf("兑换完毕,你是否还需要进行兑换?(y/n)");
     scanf(" %c",&c);/*注意这里要有空格*/
    }
printf("谢谢你的使用")
}
假设现在输入yyy/n
分析如下:首先是由第一个scanf接收到第一个y,然后进入循环输出printf("兑换完毕,你是否还需要进行兑换?(y/n)"),此时由循环中的scanf函数接收数据,由于有空格,起作用仅仅是屏蔽/0,而这里没有,所以c中内容为y||Y,故进行循环,反复输出三次以后会遇到/0,而/0首先由参数空格屏蔽,而%c未能遇到输入字符,所以它将会等待用户的输入。
总结:空格在scanf函数中实际上是一个参数,还有,scanf函数和printf函数都有返回值,scanf函数返回是参考%d或者%f等正确接受的个数,printf的返回是能正确输出到屏幕的字符个数。如果你们项具体了解更高级的scanf和printf的用法,以及c语言如何从底层实现,请参考《c语言实用教程》,电子工业出版社国外计算机教材系列,这本书是c语言经典教材,可以说目前没有一本c语言书能与这本书相比,查询地址
http://www.phei.com.cn/bookshop/bookinfo.asp?bookcode=TP69310%20%20&booktype=main

抱歉!评论已关闭.