C语言实现int转换字符串的一种实现
来源:互联网 发布:淘宝好评语30字化妆品 编辑:程序博客网 时间:2024/05/29 04:17
在技术人员面试的时候,经常会被要求实现标准库的一些函数比如strlen,strcpy,itoa,atoi等等。本文就简单的聊聊一次面试的笔试题,作为一次失败面试的记录。
由于预先不知道整数的位数,一般在转字符串的时候,都是通过从个位开始往高位逐个转换。这样就会在转换完成以后,需要对生成的字符串进行逆序,才能达到最终结果。
本方案采取了一个小技巧,通过指针运算,字符拷贝(当然也可以直接通过内存考虑)方式,省略了最终的一个步骤:字符串逆序。
以下是具体的程序实现:
1 #include <stdio.h> 2 3 char* toString(int iVal) 4 { 5 /* 优化点: 6 * 1,不通过堆栈的方式,无需进出栈,或者是对字符串进行逆序,直接通过指针运算,内存拷贝方式或者最终结果 7 */ 8 char str[1024] = {'\0',}; 9 char *pos = NULL; 10 int sign = 0; //正数 或者是 0 11 12 int abs = iVal; 13 14 pos = str + 1023; //移动指针,指向堆栈底部 15 *pos-- = '\0'; //end 16 17 if(iVal < 0) 18 { 19 sign = 1; 20 abs = -abs; 21 } 22 23 int dit = 0; 24 while(abs > 0) 25 { 26 dit = abs % 10; 27 abs = abs / 10; 28 29 *pos-- = (char)('0' + dit); 30 } 31 32 if(sign) 33 *pos-- = '-'; 34 35 char *ret = (char*)malloc(1024 - (pos - str)); 36 37 if(iVal == 0) //0的一个处理 38 strcpy(ret, "0"); 39 else //iVal非0的拷贝 40 strcpy(ret, pos+1); 41 42 return(ret); 43 } 44 45 int main(int argc, char* argv[]) 46 { 47 char* ret = NULL; 48 49 int iVal = atol(argv[1]); 50 // int iVal = 123456; 51 printf("ival = %s\n", toString(iVal)); 52 53 return(0); 54 }
阅读全文
0 0
- C语言实现int转换字符串的一种实现
- C语言实现int转换字符串的一种实现
- C语言自己实现的 整形转换成字符串函数itoa(int Number,char* Str)
- C语言字符串转int整数的实现源代码
- 【C语言】【笔试题】实现一个函数int my_atoi(char s[]),可以将一个字符串转换为对应的整数。
- 【C语言】【笔试题】实现一个函数int my_atoi(char s[]),可以将一个字符串转换为对应的整数。
- C语言实现 字符串转换为整数输出 int ascii_to_integer(char *str);
- 用C语言实现将int类型转化为字符串,不使用已有的转换函数
- c语言 strtok strtok_r的一种实现
- 一种有限状态机的C语言实现
- 整理:一种有限状态机的C语言实现
- C 语言单例的一种实现
- 字符串转unsigned int函数-C语言实现
- 将字符串转换成double或者int的实现(c programming language)
- 【C语言】【笔试题】实现函数itoa(int n,char s[]),将整数n这个数字转换为对应的字符串,保存到s中
- C语言:实现一个函数itoa(int n,char s[]),将整数n这个数字转换为对应的字符串,保存到s中
- int型整数转换成字符串的C++实现
- C语言中字符串到整型以及整型到字符串的转换粗浅实现
- Codeforces 811 E. Vladik and Entertaining Flags (线段树+并查集)
- 第五章 Linux常用命令(查找命令)
- github删除仓库
- 25 行 Python 代码实现人脸识别——OpenCV
- Nearest Common Ancestors 【并查集找根节点】+【步近法在线求lca】or【LCA转RMQ】
- C语言实现int转换字符串的一种实现
- CSS样式中内联、嵌入、外部样式
- BZOJ3675 [Apio2014]序列分割 斜率优化
- SURF算子总结
- 欢迎使用CSDN-markdown编辑器
- JavaWeb 17-5-28
- 2017网易春招 集合(set)
- 英伟达显卡驱动和SteamVR相冲突
- PHP取出代码中的空格