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

原创 2004年08月10日 14:04:00
或许我有点多余,但是看到有很多人问起这件事情,我也不得不再提起这个函数
实际上在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

C语言——使用scanf函数时需要注意的问题

转自:http://blog.csdn.NET/wayne92   scanf函数我曾经在这个函数上犯过不少错误,也看到别人犯过的错误,记下来,提醒自己不要重蹈覆辙了。如果对你有用,那就更好...
  • qq_31108501
  • qq_31108501
  • 2016年12月01日 18:21
  • 1509

C语言scanf函数用法详细解释!!!

函数名: scanf  功 能: 执行格式化输入  用 法: int scanf(char *format[,argument,...]); scanf()函数是通用终端格式化输入函数,它从标准...
  • linux12121
  • linux12121
  • 2016年07月21日 10:53
  • 9134

46 结合C语言缓冲区谈scanf()函数

结合C语言缓冲区谈scanf()函数
  • czg13548930186
  • czg13548930186
  • 2017年06月02日 14:08
  • 1153

黑马程序员-IOS-C语言基础-scanf函数

-------------------------------------- android培训、java培训、ios培训期待与您交流! ------------------------------...
  • qq_25027273
  • qq_25027273
  • 2015年01月07日 00:44
  • 279

iOS笔记:第二篇 C语言scanf函数、变量和运算符

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 第一节  scanf函数 一、scanf函数的作用和语法 1>作用:可以在程序运行的时候让用户...
  • u013257731
  • u013257731
  • 2015年03月14日 18:06
  • 549

C语言scanf函数详细解释

转载自:http://blog.csdn.net/kobesdu/article/details/39051399 函数名: scanf  功 能: 执行格式化输入  用 法: int scan...
  • wb595972434
  • wb595972434
  • 2017年02月04日 16:54
  • 127

黑马程序员——C语言基础语法--scanf函数、基本运算、流程控制

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-scanf函数调用scanf函数时,需要传入变量的地址作为参数,scanf函数会等待标准输入设备(比如键盘)输入数...
  • qq_26989441
  • qq_26989441
  • 2015年04月04日 23:21
  • 285

C语言scanf函数处理机制及getchar机制

函数 scanf() 是从标准输入流stdio (标准输入设备,一般指向键盘)中读内容的通用子程序,可以说明的格式读入多个字符,并保存在对应地址的变量中。 其调用格式为: scanf(“”,); ...
  • cs1462155255
  • cs1462155255
  • 2017年08月09日 11:45
  • 129

C语言—scanf函数、sizeof、三木运算、各种运算符

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- ---scanf函数 1.scanf函数的基本使用 #include in...
  • d2678230143
  • d2678230143
  • 2015年04月04日 13:40
  • 744

C语言Scanf函数剖析以及数字求和算法

在C语言里,字符的输入都是通过调用函数来实现的:getchar( )、scanf( ) 其中,getchar 函数只能处理单个字符的输入与输出,函数体本质上与scanf函数是一致的,都是阻塞式函数。...
  • archi_Xiao
  • archi_Xiao
  • 2015年05月09日 15:54
  • 820
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在C语言中关于scanf函数的高级应用
举报原因:
原因补充:

(最多只允许输入30个字)