美文网首页编程语言爱好者C语言C语言&嵌入式
C语言快速入门——字符串生成

C语言快速入门——字符串生成

作者: 轻松学习C语言 | 来源:发表于2018-03-24 17:06 被阅读27次

    C语言永远不会过时

    其实学编程关键是学习其思想,如果你精通了一门,再去学其他的时候也很容易上手。C不会过时的,尤其是在unix、linux操作平台上,学好C是必须的。

    C跟C++在很多方面也是兼容的,c是c++的基础。

    再者c能从很大的程度上帮你了解计算机的发展史,数据结构等方面的知识,很多软件、甚至操作系统中的很大部分是用c来实现的。

    还有一些电器芯片的程序,比如电冰箱内制冷系统……可以说用c可以解决一切可能遇到的问题,关键是你要能精通它。

    所以放开手脚去大胆的学吧,c永远不会过时

    很多小伙伴都老是会碰到疑问,其实还是基础没打扎实,这些题如果你不看答案你能知道多少呢?如果还有很多不知道就证明基础没打扎实,如果你还在入门纠结,如果你还在苦恼怎么入门!小编有个建议,可以加小编弄的一个C语言/c++交流基地,大家可以进入交流基地:567625668里面新手入门资料,可以说从零到项目实战,都是可以免费获取的,还有程序员大牛为各位免费解答问题,热心肠的小伙伴也是蛮多的。不失为是一个交流的的好地方,小编在这里邀请大家加入我的大家庭。欢迎你的到来。一起交流学习!共同进步!小编等你!

    假设我们现在正在开发一款文档管理类软件。其中一项功能就是一次性创建多个名称连续的文件夹,如Icon1、 Icon2等等。整个名称可以分作两部分,前半部分是常量字符串"Icon",后半部分是编号字符串。在使用循环语句生成名称时,编号是数字,如果能将编号转换为一个字符串,那么我们就可以用strcat函数将两部分组合起来,然后使用mkdir创建文件夹即可。因此,现阶段问题就变成了如何把数字转换为对应的字符。

    原始社会

    现在又到了查看ASCII码表的时候了,通过查表我们可以看到,字符'0',对应的ASCII码是48,也就是说数值48,转换为char类型就是字符'0',根据这个简单的对应关系,我们就可以生成名称了。

    输出编号从0-9的名称,整体效果还不错。不过,我想你也看到局限性了,如果要生成编号大于10的名称,这个程序就像小孩数指头做算术一样,不够用了。

    二阶文明

    在这一文明阶段的,我们的思考认知能力有了巨大的提升,我们希望能根据指定的一个区间生成对应的名称,如Icon17到Icon35,同时还希望前导名称能够指定,就像是Name999-Name1234一样。同样,最关键的问题还是数值到字符串的转换,因为现在的数值范围更大了,需要的处理也就更多了。让我们尝试编写一个函数去解决这个问题。

    文明:itoa

    现在我们进化到了三阶文明,在这一阶段,我们不再需要自己编写复杂的数值转换字符串函数了。而是使用本阶文明提供的函数来完明,这个函数就是itoa,它由stdlib.h提供。

    原型名:char*itoa( int value, char *string, int radix );

    value是被转换的整数,string是转换后储存的字符数组,radix是转换进制数,如2,8,10,16进制。

    极文明

    想想看,如果我们仅仅是要输出符合要求的名称,那么使用 printf("Icon%d", 83); 之类的语句即可达到要求。在这一文明阶段,C语言运行时库进化出了格式化字符串函数sprintf。

    不同于printf将信息输出到屏幕(确切的说是标准输出),sprintf将格式化后的字符串输出到对应的字符数组,一击达到目的,其相应的安全版本是sprintf_s。同printf一样,可以使用格式化控制符,可以帮助我们生成补齐的文件夹名称。在运行完这个程序后,转到对应的工程目录,你会发现Icon98 Icon99...静静的躺在那儿。

    通过这节内容的学习,希望能帮助你更深刻的理解ASCII码表、更好的操作数组,熟悉C提供的字符串函数。对于C语言字符串函数,建议你更多的使用其安全版本。最后要说明的是,做为练习,你可以写一个数字转换为字符串的函数;做为开发,你可以先去查找语言提供的库是否包含有你需要的功能,有,就用它!

    相关文章

      网友评论

      • 皮拉夫大王:你这是从企鹅号、或大鱼号、或微信公众号赤裸裸的拷贝我的文章。

      本文标题:C语言快速入门——字符串生成

      本文链接:https://www.haomeiwen.com/subject/rroqcftx.html