加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

聊聊C语言那些事儿之字符串和格式化输入/输出

发布时间:2018-05-01 08:02:37 所属栏目:教程 来源:大学生编程指南
导读:好,今天继续我们的课程,这节课我们讲讲关于字符串和格式化输入输出的一些知识,获得知识是为了更好的在实践的过程中有理论知识的铺垫,而不是临危受命。总之学习是为了更好的生存更好的在这社会上生存,你适应不了社会,社会总将会淘汰你。 上节课,我们

聊聊C语言那些事儿之字符串和格式化输入/输出

好,今天继续我们的课程,这节课我们讲讲关于字符串和格式化输入输出的一些知识,获得知识是为了更好的在实践的过程中有理论知识的铺垫,而不是临危受命。总之学习是为了更好的生存更好的在这社会上生存,你适应不了社会,社会总将会淘汰你。

上 节课,我们讲到了数据和c,相信大家也认识到了很多相关的理论知识,那么现在我们就顺藤摸瓜,继续学习。首先这节课的主角是scanf()和 printf()函数和char数组类型,也就是我们之前说的一个是打字 ,一个是把字打印出来,理论就是这样的操作过程。当然故事有了主角没有配角哪能演好一出戏呢,那么这个配角就是转化说明修饰符,目的就是来处理格式化的输 入与输出。就好像对号入座的道理一样,就比如你上火车了,是不是有个座位号给你啊,然后你就要必须对着这个号码进行对号入座。那么现在我就来介绍几个最常 见的转化说明修饰符。

聊聊C语言那些事儿之字符串和格式化输入/输出

最 后的主角char闪耀登场,用一个例子说明一下 char name[40];这个语句说明了在name的储存空间中开辟了40个元素数目,因为是char的声明所以每一个元素大小为1B,不过在这个字符串数组中 只能放入39个元素的数目,这是为什么呢,原来,在字符串数组中最后一个元素必须要加一个,以表示结束的标志。

来看看一个例子把两个内容结合一下。

#include <stdio.h>

int main ()

{

char name[40] ; //声明一个叫name的储存空间,数组的元素数目是40

printf("what is your name ?n");//转化说明字符/n换行

scanf("%s,name");//输入一个字符串,使用了%s的转化修饰符,表示输入字符串

printf("hello,%s.n",name);//输出字符串

return 0;

}

大 家运行这个程序会发现一个很奇怪很有趣的现象。比如输入 xiao ming 输出的结果不是xiao ming而是xiao,这到底发生了什么事情呢,这就要说一说scanf函数的一个特点了,使用%s,scanf()只会读入一个单词就是连续紧挨的字 符,而不是一个语句的读入,解决一个语句的读入可以使用gets()函数,这个函数我们会到后面有详细的讲解,再说回scanf()的特点,它说到底就是 遇到空白字符,转化说明字符就会停止读入。这里需要十分留意。

说到scanf()函数,萌小编也着实给他坑了一把,说实在应该是微软坑了我 一把,在小编使用visual stdio 2013进行编程的时候发现,当我使用sacanf函数时总会报错,一开始我也以为自己的语句有问题,但是找了半会也找不出来,最后索性找师傅问了一下, 原来,微软为了内存保护为原则的目的,必须使用scanf_s("语句",转化说明字符,储存的空间)的模式进行编写,可以不让数据过大导致内存不够而溢 出到另一个储存空间,当时我真的是直接骂娘了,醉了,这微软真会玩,看来win10小编也不升先了,不然给微软算计一番就不好。

小编也只能默默的感叹道:城里人真会玩,我还是回家耕田去吧。(想多了田都没得你耕呢!!)

本文属原创,转载请注明出处,谢谢!

如果对编程感兴趣,想了解更多的编程知识,解决编程问题,以及入门指导,帮你解决编程 中遇到的困惑,我们这里有java高手,C++/C高手,windows/Linux高手,android/ios高手,请大家关注微信公众号:程序员互 动联盟或者coder_online

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读