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

响应式的网站建设一个多少钱网站信息同步

响应式的网站建设一个多少钱,网站信息同步,凡科做的网站可以优化,公司网站后台更新点击 C 语言编程核心突破 快速C语言入门 itoa函数的局限以及实现 前言一、功能描述二、具体实现对于第一版, 实现如下:第二版实现:测试用例: 总结 前言 把一个数用某种进制打印, 是一个很有用的功能, 值得庆幸的是, C语言有这么一个函数itoa(), 它可以把一个数转换为… 点击 C 语言编程核心突破 快速C语言入门 itoa函数的局限以及实现 前言一、功能描述二、具体实现对于第一版, 实现如下:第二版实现:测试用例: 总结 前言 把一个数用某种进制打印, 是一个很有用的功能, 值得庆幸的是, C语言有这么一个函数itoa(), 它可以把一个数转换为2至36进制的字符串, 但不那么幸运的是, 这个函数只是存在于某些编译器中, 比如Windows下的clang, 但Linux下, 则没有这个函数. 不过这也不是什么问题, 既然选择用C语言, 造轮子就是程序员的命运, 做个函数实现, 并不困难. 一、功能描述 itoa()函数需要传入三个参数, 一个无符号整数num, 基于num进行进制转换, 一个字符指针string, 为了安全, 至少需要33字节, 因为我们要实现一个转换32位的函数, 如果是2进制, 最大需要32位, 外加一个末尾0, 一个进制限制radix, 从2到36, 再多也可以, 但是意义不大. 函数返回赋值后的string字符指针, 因此函数原先应该是: char *itoa(uint32_t num, char *string, uint32_t radix);二、具体实现 对于第一版, 实现如下: #include stdint.h #include string.hchar *itoa(uint32_t num, char *string, uint32_t radix) {static char arr[40];arr[0] 0;static int index;index 31;while (num){static uint32_t numA;numA num % radix;arr[index--] (char)(numA 9 ? numA - 10 a : numA 0);num / radix;}static char *rest;rest arr (index 31 ? 0 : index 1);strncpy(string, rest, 32 - index);return string; }但有两个问题可以进行改进, 其一, 进制限制没有判断, 如果是超过2至36的其它数则会出现比较奇怪的输出, 需要打个补丁. 其二, 基于效率, 字符转换用了三目运算, 这个可能比较吃效率, 需要优化. 第二版实现: #include stdint.h #include string.hchar *itoa(uint32_t num, char *string, uint32_t radix) {// 如果进制限制超出范围, 则返回空字符串if (radix 2 || radix 36){string[0] \0;return string;}// 如果num等于0, 则直接赋值为0, 返回if (num 0){string[0] 0;string[1] \0;return string;}// 建立一个buffer, 40的空间足够容纳所有转换字符static char arr[40];// 建立一个索引, 用于从后向前填充字符static int index;index 31;while (num){// 直接通过数组引用赋值, 免去分支以及计算arr[index--] 0123456789abcdefghijklmnopqrstuvwxyz[num % radix];num / radix;}// 这个函数的参数比较值得关注// arr index 1 是指向最后被赋值的字符位置的指针// 32 - index 是赋值字符数量 1 多一个字符位是给末尾0的strncpy(string, (arr index 1), (32 - index));return string; }实现中没有考虑到有符号的问题, 因为C语言中, 本身十六进制或二进制就没有符号, 当然, 如果有必要设计符号的转换, 也不难, 但函数的形参类型需要转换, 大家可以自己研究. 测试用例: #include stdint.h #include stdio.h #include string.hchar *itoa(uint32_t num, char *string, uint32_t radix);int main() {char str[40] abcdabcdabcdabcdabcdabcdabcdabcdabcd;itoa(255, str, 16);itoa(8, str, 16);itoa(-1, str, 2);itoa(0, str, 2);itoa(0, str, 1);return 0; }char *itoa(uint32_t num, char *string, uint32_t radix) {// 如果进制限制超出范围, 则返回空字符串if (radix 2 || radix 36){string[0] \0;return string;}// 如果num等于0, 则直接赋值为0, 返回if (num 0){string[0] 0;string[1] \0;return string;}// 建立一个buffer, 40的空间足够容纳所有转换字符static char arr[40];// 建立一个索引, 用于从后向前填充字符static int index;index 31;while (num){// 直接通过数组引用赋值, 免去分支以及计算arr[index--] 0123456789abcdefghijklmnopqrstuvwxyz[num % radix];num / radix;}// 这个函数的参数比较值得关注// arr index 1 是指向最后被赋值的字符位置的指针// 32 - index 是赋值字符数量 1 多一个字符位是给末尾0的strncpy(string, (arr index 1), (32 - index));return string; }总结 设计一个可用的库函数比想象的还是要难一些, 需要考虑到很多问题, 兼容性, 可移植性, 效率, 以及使用者的理解, 从这一个小小的函数实现, 就可见难度之大, 所以说, 有时候认为自己设计的东西随便就能碾压库函数, 那可能是梦的深沉, 没有睡醒. 点击 C 语言编程核心突破 快速C语言入门
http://www.yutouwan.com/news/403228/

相关文章:

  • 怎样使用仿站小工具做网站ppt模板大全百度云
  • 微信网站是怎么做的高密市住房和城乡建设局网站
  • wordpress评论ajax加载seo公司运营
  • 网站使用网络图片做素材 侵权淄博电商网站建设
  • 做理论的网站做新标准大学英语网站
  • 做英文的小说网站有哪些怎么样网站速度快
  • 网站系统与程序的链接秦皇岛城乡建设局网站
  • thinkphp做的教育网站梅江区住房和城乡建设局官方网站
  • vf建设银行网站好的html5网站模板
  • 德州宁津建设局网站哪个网站可以代做试题
  • 做seo时网站发文目的自建网站赚钱
  • 微网站设计方案网站建设与维护前景
  • 为什么做网站需要服务器哈尔滨优化网站排名
  • 武义县建设局网站首页做海报哪个网站的素材多
  • 天猫商城网站设计分析网站开发软件开发流程
  • 网站配色网如何运用网站模板
  • 昆明软讯科技网站建设外包公司软件开发分录
  • 企业电子商务网站开发实验报告郑州网络推广厂家
  • 做黄金期货的网站谷歌amp wordpress
  • 广告推广怎么做最有效seo网站关键词优化怎么做
  • 免费下载网站有哪些网站建设 英文版
  • 深圳建设网站费用明细网站域没到期不能续费吗
  • 淮安软件园网站建设华为sdn企业解决方案
  • 加强网站建设的请示页面设计培训多少钱
  • ppt哪个网站质量高wordpress 主题 中国风
  • 给网站做seo诊断阳江58同城招聘网
  • 一个人可以做几个网站负责人网页游戏开服表怎么删
  • 公司做网站的费用属什么用途建设企业网站公司
  • 公众号和网站如何建设万网网站
  • 网站做浏览器兼容简述获得友情链接的途径