当前位置: 首页 > news >正文

小说网站制作开源上海网站制作科技公司

小说网站制作开源,上海网站制作科技公司,一般网站设计多少钱,网站名称大全scanf函数说明 scanf函数是对来自于标准输入流的输入数据作格式转换#xff0c;并将转换结果保存至format后面的实参所指向的对象。 而const char*format 指向的字符串为格式控制字符串#xff0c;它指定了可输入的字符串以及赋值时转换方法。 简单来说给一个打印格式(输入…scanf函数说明 scanf函数是对来自于标准输入流的输入数据作格式转换并将转换结果保存至format后面的实参所指向的对象。 而const char*format 指向的字符串为格式控制字符串它指定了可输入的字符串以及赋值时转换方法。 简单来说给一个打印格式(输入数据格式)scanf函数会将打印数据格式的结果转换放到后面的实参变量当中。 比如下面的代码 #includestdio.h int main() {int a 0;char ch 0;double b 0.0;scanf(%d %c %lf, a, ch, b);printf(%d %c %lf, a, ch, b);return 0; } 但scanf函数有一个缺点就是scanf读取不了空格和回车等字符当scanf读到这两个字符时scanf会读取失败返回EOF如果匹配错误也会读取失败返回EOF(比如应该是%d的数据转换到了char实参变量当中)。 EOF EOF全名是:End of File 在stdio.h头文件中被定义为负值即-1。 EOF的值不同编译器下值不同在VS2019是-1  如果没有将头文件stdio.h包含到程序中那么EOF就没有定义程序不能编译和运行。 getchar和putchar putchar的返回值是int因为字符在程序存储的是ASCII码值而且putchar只能打印字符不能打印字符串就是配合getchar()使用的。如果putchar成功获取了字符就返回所写字符失败就返回EOF。 #includestdio.h int main() {putchar(a);putchar(b);putchar(c);return 0; } getchar返回也是int参数是void可有可无getchar是从标准输入流读取字符(空格 回车都可以读取)并将其返回如果读取失败就返回EOF。  比如 #includestdio.h int main() {int ch;while ((ch getchar()) ! EOF){putchar(ch);}return 0; } getchar如果缓冲区没有字符getchar会等待我们的输入且摁下回车键才会打印在屏幕上。 配合putchar使用。 按下回车键后才在屏幕上输出对应字符。 ctrlZ是将程序结束掉退出了程序终止了代码循环。 crtlZ相当于EOF。 为什么按回车键才会将字符输出到屏幕上呢 C语言的输入输出一般会将读入的字符以及待输出的字符暂时保存在缓存中(缓冲区),当达到以下条件才进行实际的输入输出操作。 1.缓存已满 2.输入换行符(\n)  3.立即输出 对应方式称为1.全缓冲 2.行缓冲 3无缓冲 键盘输入的内容不会直接给cpu处理打印在屏幕上 而是交给缓存 提高cpu运行效率。 getchar与scanf的关系 我们根据下图代码来分析getchar和scanf之间的关系 #includestdio.h int main() {char password[20] { 0 };printf(请输入密码:);scanf(%s, password);printf(请确认密码正确Y/N:);char ch 0;scanf(%c, ch);if (Y ch){printf(密码正确\n);}else{printf(密码错误\n);}return 0; } 当程序运行时我们刚输入完密码程序直接结束了都没有确定密码的正确性这是为什么呢 当我们输入密码摁下回车键时在缓冲区输入了1234\n回车键相当于换行等于转义字符\n 第一个scanf读取了1234 第二个scanf读取了\n 直接填满了两个scanf的嘴巴因此直接程序结束 并且结果为密码错误当我们输入完1234摁下回车键那刻\n也被载入到了缓冲区第二个scanf 定睛一看缓冲区有内容直接就读取走了。 解决办法  这时我们就要请出getchar给scanf擦屁股了因为getchar能读取回车 空格等字符。 #includestdio.h int main() {char password[20] { 0 };printf(请输入密码:);scanf(%s, password);printf(请确认密码正确Y/N:);char ch 0;getchar();scanf(%c, ch);if (Y ch){printf(密码正确\n);}else{printf(密码错误\n);}return 0; } 但如果有人在设置密码时写入了空格而且scanf读取不了空格和回车字符这时还是会出现代码判断错误导致运行结果错误。 我们直接用while循环搞一个一劳永逸的解决方案 直接使用循环清空缓冲区的空格 回车等字符 #includestdio.h int main() {char password[20] { 0 };printf(请输入密码:);scanf(%s, password);printf(请确认密码正确Y/N:);char ch 0;while ((getchar()) ! \n){;} //以下两种写法都okscanf(%c,ch);//chgetchar();if (Y ch){printf(密码正确\n);}else{printf(密码错误\n);}return 0; } 关系 输入b后摁下回车键形成\n 缓冲区载入的就是b\n 第一个scanf读取b 第二个scanf读取\n  因此程序结束语在第三行 输入a\n scanf读取a getchar读取\n putchar输出a  输入a\n 第一个scanf读走a  getchar读走\n 第二个scanf正常使用再次输入b\n  putchar在下一行输出b scanf读走as \nbxx是putchar读取的   a是第二个scanf读取的后面还有个\n 所以程序结束语在第4行。 总结 如果scanf输入过程中遇到空格 回车键等字符scanf自己处理不了的读取字符时就用getchar来解决如果有多个处理不了的特殊字符就用while循环来处理(scanf处理不了的空格 回车键等特殊字符)配合getchar和putchar来给scanf的正常使用(擦屁股)。
http://www.zqtcl.cn/news/113516/

相关文章:

  • 过年做那个网站致富盘锦网站建设vhkeji
  • 网站semseo先做哪个关键词投放
  • 药品招商网站大全南阳做网站公司电话
  • 优秀手机网站大学生创新产品设计作品
  • 备案期间关闭网站宝应人才网
  • 响应式网站一般做几个版本官网+wordpress
  • 太原网站建设方案服务佛山市建设工程有限公司
  • 智能网站建设平台php mysql 网站源码
  • 夏天做那些网站能致富百度关键词价格怎么查询
  • 厦门微信网站专业从事网站开发公司
  • 网站标题的写法湖南如何做网络营销
  • 设计做兼职的网站求推荐医院英文网站建设
  • 有没得办法可以查询一个网站有没得做竞价呀ai可以用来做网站吗
  • 俄乌局势最新消息惠州seo排名优化
  • 常州发布信息的有什么网站电商平台建设公司
  • 高新区手机网站建设长沙关键词优化服务
  • 网站开发预算报价表推销网站的方法
  • 做网站需要几个人昆明旅行社网站开发
  • 上海产品网站建设网站建设分为哪些
  • 史志网站建设在线网站建设工程标准
  • 青海省建设工程在哪个网站发布北京专业网站外包公司
  • 东营网站建设公司wordpress获取子分类
  • 网站的尾页要怎么做d代码做网站
  • 自己做一元购网站烟台网站设计公司推荐
  • 有没有做彩票直播的网站成都十八个网红打卡地
  • 急求聊城网站建设网站服务器管理系统
  • 做网站需要什么许可证商场设计效果图
  • html网页制作视频windows优化大师有哪些功能
  • 国外建站主机帝国手机网站cms系统
  • 响应式网站建设哪家好网站空间支付方式