itoa函数的实现,函数实现功能:输入一个 int 型的数据然后修改成 十六进制的字符串。 例如:  输入 100  输出 0x64

主函数:

 int main(void){
char val[];
my_atoi(val,);
printf("%s\n",val);
return ;
}

正常的情况下就是使用 传入的num 除以 16,得到余数,然后循环除。但是得到的数据是反的,所以需要再把字符串逆序一下;

char change(int num){
if(num > )
return num+'A'-;
else
return num+'';
} //颠倒数组中的元素
void swap(char* val){
char* tmp;
tmp = val;
while(*++tmp);
tmp--;
//printf("%c\n",*tmp);
//printf("%d\n",tmp-val);
while((tmp - val + ) / ){
char ch;
ch = *tmp;
*tmp = *val;
*val = ch;
tmp--;
val++;
}
}
void my_atoi(char* val,int num){
int i = ;
while(num/){
val[i] = change(num%);
num /= ;
i++;
}
val[i++] = change(num);
val[i++] = 'x';
val[i++] = '';
val[i++] = ;
//由于存入数组中的元素是倒序的,要把数组颠倒一下
swap(val);
}

上面的代码是用 指针逆序,下面用另一种方法逆序

 void swap2(char* val){
char* tmp = val;
int i = ;
int j;
while(*tmp++)
i++;
//printf("%d\n",i);
for(j = ; j < i/; j++){
char ch;
ch = val[j];
val[j] = val[i - j - ];
val[i - j - ] = ch;
}
}

  其实还有一种方法更加简便,不需要使用字符串的逆序,因为用次算法得到的数据是逆序的,所以,就想办法让字符串从最后开始输入,然后返回字符串的指针。但是有一点需要注意,首先要知道数组的长度,然后才可以得到数组的最后一个位置。所以可以在 调用此函数之前 把数组的长度赋值到数组的第一个元素里面。

 char* my_atoi2(char* val, int num){
int i = val[];
while(--i)
val++;
//printf("%c\n",*val);
*val-- = ; //由于是倒着输入,所以第一个元素应该是字符串的结束符
while(num/){
*val-- = change(num % );
num /= ;
}
*val-- = change(num%);
*val-- = 'x';
*val = '';
return val;
}

main函数修改如下:

 int main(void){
char val[];
my_atoi(val,);
printf("%s\n",val);
return ;
}

全部代码如下:

 #include <stdio.h>

 char change(int num){
if(num > )
return num+'A'-;
else
return num+'';
} //颠倒数组中的元素
void swap(char* val){
char* tmp;
tmp = val;
while(*++tmp);
tmp--;
//printf("%c\n",*tmp);
//printf("%d\n",tmp-val);
while((tmp - val + ) / ){
char ch;
ch = *tmp;
*tmp = *val;
*val = ch;
tmp--;
val++;
}
} void swap2(char* val){
char* tmp = val;
int i = ;
int j;
while(*tmp++)
i++;
//printf("%d\n",i);
for(j = ; j < i/; j++){
char ch;
ch = val[j];
val[j] = val[i - j - ];
val[i - j - ] = ch;
}
} void my_atoi(char* val,int num){
int i = ;
while(num/){
val[i] = change(num%);
num /= ;
i++;
}
val[i++] = change(num);
val[i++] = 'x';
val[i++] = '';
val[i++] = ;
//由于存入数组中的元素是倒序的,要把数组颠倒一下
swap2(val);
}
char* my_atoi2(char* val, int num){
int i = val[];
while(--i)
val++;
//printf("%c\n",*val);
*val-- = ; //由于是倒着输入,所以第一个元素应该是字符串的结束符
while(num/){
*val-- = change(num % );
num /= ;
}
*val-- = change(num%);
*val-- = 'x';
*val = '';
return val;
}
int main(void){
char val[];
val[] = ;
//my_atoi2(val,43983);
printf("%s\n",my_atoi2(val,));
return ;
}
int main(void){
char val[];
my_atoi(val,);
printf("%s\n",val);
return ;
}

【C】——itoa 函数的实现的更多相关文章

  1. C语言itoa()函数和atoi()函数详解(整数转字符C实现)

    1.int/float to string/array: C语言提供了几个标准库函数,可以将任意类型(整型.长整型.浮点型等)的数字转换为字符串,下面列举了各函数的方法及其说明. ● itoa():将 ...

  2. C语言itoa()函数和atoi()函数详解(整数转字符)

    http://c.biancheng.net/cpp/html/792.html C语言提供了几个标准库函数,可以将任意类型(整型.长整型.浮点型等)的数字转换为字符串. 以下是用itoa()函数将整 ...

  3. itoa函数的实现(不同进制)

    2013-07-08 17:12:30 itoa函数相对于atoi函数,比较简单,还是要注意考虑的全面. 小结: 一下几点需要考虑: 对负数,要加上负号: 考虑不同进制,根据要求进行处理:对不同的进制 ...

  4. itoa函数的递归实现(二级指针实现)

    问题提出 <C Programming Language>书中在递归这一节预留了两个使用递归实现的函数,其中itoa函数是用来将一个整数转换为一个字符串.书中已有使用循环实现的版本,但是直 ...

  5. C语言itoa函数和atoi 函数

    C语言提供了几个标准库函数,可以将任意类型(整型.长整型.浮点型等)的数字转换为字符串.以下是用itoa()函数将整数转 换为字符串的一个例子: # include <stdio.h>  ...

  6. c++实现atoi()和itoa()函数(字符串和整数转化)

    (0) c++类型所占的字节和表示范围 c 语言里 类型转换那些事儿(补码 反码) 应届生面试准备之道 最值得学习阅读的10个C语言开源项目代码 一:起因 (1)字符串类型转化为整数型(Integer ...

  7. itoa函数,sprintf函数

    itoa函数 itoa 为c语言的一个函数.itoa 函数是一个广泛应用的,从非标准扩展到标准的C语言.它不能被移植,因为它不是标准定义下的C语言,但是,编译器通常在一个不遵循程式标准的模式下允许其通 ...

  8. 源码实现 --> itoa函数实现

    itoa函数实现 itoa()函数的功能是将一个整数转换为一个字符串 例如12345,转换之后的字符串为"12345",-123转换之后为"-123",欢迎大家 ...

  9. 面试:atoi() 与 itoa()函数的内部实现(转)

    原 面试:atoi() 与 itoa()函数的内部实现 2013年04月19日 12:05:56 王世晖 阅读数:918   #include <stdio.h> #include < ...

  10. itoa()函数和atoi()函数详解

    C语言提供了几个标准库函数,可以将任意类型(整型.长整型.浮点型等)的数字转换为字符串. 以下是用itoa()函数将整数转换为字符串的一个例子:# include <stdio.h># i ...

随机推荐

  1. Python 爬虫实例(13) 下载 m3u8 格式视频

    Python  requests  下载  m3u8 格式    视频 最近爬取一个视频网站,遇到  m3u8 格式的视频需要下载. 抓包分析,视频文件是多个  ts 文件,什么是 ts文件,请去百度 ...

  2. django 文档生成器

    参考博客:http://www.liujiangblog.com/course/django/160

  3. linux(centos6)搭建ftp服务器 -摘自网络

    前提 ssh服务已经开启,关闭防火墙,主机和虚拟机能ping通 查看ssh和防火墙的状态 service sshd status service iptables status 开启ssh服务 ser ...

  4. Java数据结构和算法(十):二叉树

    一.简介 二叉树是树这种数据结构的一员,后面我们还会介绍红黑树,2-3-4树等数据结构.那么为什么要使用树?它有什么优点? 前面我们介绍数组的数据结构,我们知道对于有序数组,查找很快,并介绍可以通过二 ...

  5. Spring Security教程(一):初识Spring Security

    一.概要 Spring Security,这是一种基于 Spring AOP 和 Servlet 过滤器的安全框架.它提供全面的安全性解决方案,同时在 Web 请求级和方法调用级处理身份确认和授权.以 ...

  6. 《AndroidStudio每日一贴》2.高速查看项目中近期的变更

    <AndroidStudio每日一贴>2.高速查看项目中近期的变更 高速查看项目中近期的变更,使用快捷键: option + shift +c 很多其它有用技巧请查看<Android ...

  7. 一个里表世界切换的shader效果

    之前GGJ实现了一个,但是实现方式上有很多冗余.今天正好在做一个类似的东西,重新做了一个版本 还是当时美术画的素材: 由于里表世界是不同的内容,是两张材质.所以拆分成不同Layer之后,里世界单独渲染 ...

  8. Atitit 我们的devops战略与规划 规范 推荐标准

    Atitit 我们的devops战略与规划 规范 推荐标准 1. Vm容器化1 2. 热部署tomcat+jrebel 或者resin1 3. 增量更新与差异更新1 4. 补丁提取与应用2 为了方便提 ...

  9. Android Shell命令dumpsys

    dumpsys命令可以显示手机中所有应用程序的信息,并且也会给出现在手机的状态. 直接执行adb shell dumpsys KEY 会显示以下所有信息. KEY的可选名称 SurfaceFlinge ...

  10. C和指针第13章第4题

    题目:编写一个函数,它用于对一个任何类型的数组进行排序. 算法核心代码sort函数实现 /** 功能说明:sort函数可以对不同类型的数据进行排序 参数: 1.一个指向需要排序的数组的第一个值的指针. ...