两个C程序让你深刻理解getchar和putchar的应用.docxVIP

两个C程序让你深刻理解getchar和putchar的应用.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
两个C程序让你深刻理解getchar和putchar的应用

首先给出《The_C_Programming_Language》这本书中的例子:#include?stdio.hint?main(){????int?c;????c =?getchar();????while?(c?!=?EOF)????{??????????putchar(c);??????????c=?getchar();?????}????return?0;}这里主要解释下为什么要用int型来接受getchar函数。很多时候,我们会写这样的两行代码:char c;c = getchar();这样就很有可能出现问题。因为getchar函数除了返回终端输入的字符外,在遇到Ctrl+D(Linux下)即文件结束符EOF时,getchar ()的返回EOF,这个EOF在函数库里一般定义为-1。因此,在这种情况下,getchar函数返回一个负值,把一个负值赋给一个char型的变量是不正确的。?下面用一个题目来看其实如何获取字符和输出字符的。#include stdio.hmain(){????char c,d,e,f;????printf(please input two characters:\n);????c=getchar();????putchar(c);????putchar(\n);????d=getchar();????putchar(d);????putchar(\n);????e=getchar();????putchar(e);????putchar(\n);????f=getchar();????putchar(f);????putchar(\n);????printf(c= %c\n,c);????printf(d= %c\n,d);????printf(e= %c\n,e);????printf(f= %c\n,f);}运行后先输入“12”,回车,再输入“34”,回车。运行环境是redhat gcc运行结果:please input two characters:1212(这里空两行)343c=1d=2e=(这里空一行)f=3下面具体解释一下:getchar函数每次从缓冲区中得到一个字符,putchar函数每次输出一个字符。首先输入了两个字符12,然后回车,注意这时写入缓存中的有3个字符1,2,回车。程序中有四个getchar(),于是c=1,d=2,e=\n。这时运行到f=getchar();输入缓存中的三个字符均被前三个getchar获取,这时需要用户输入,这里输入了34于是f=3,4和后面的回车没有被利用。这便是整个流程。/* animals.c --使用switch语句*/#includestdio.h#includectype.hint main(void){char ch;printf(Give me a letter of the alphabet,and I will give );printf(an animal name\nbeginning with that letter.\n);printf(Please type in a letter: type # to end my act.\n);while((ch=getchar())!=#){if(\n==ch)continue;if(islower(ch))switch(ch){case a:printf(argail,a wild sheep of Asia\n);break;case b:printf(babirusa,a wild pig of Malay\n);break;case c:printf(coati,racoonlike mammal\n);break;case d:printf(desman,aquatic,molelike critter\n);break;case e:printf(echidna,the spiny\n);break;case f:printf(fisher,brownish marten\n);break;default:printf(Thats a stumper!\n);}elseprintf(I recognize only lowercase letters.\n);while(getchar()!=\n)continue;printf(Please type another letter or a #.\n);}printf(Bye!\n);return 0;}这个程序关键之处是:while(getchar()!=\n)continue;

文档评论(0)

xxj1658888 + 关注
实名认证
文档贡献者

教师资格证持证人

该用户很懒,什么也没介绍

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档