itoa、atoi、memcpy等函数实现
来源:互联网 发布:通用域名有什么用 编辑:程序博客网 时间:2024/05/17 22:53
itoa函数:
void itoa(int value, char* result, int base) { if(strlen(result) <= 0) { return; } if(base < 2 || base > 36) { *result = '\0'; return; } char table[] = "zyxwvutsrqponmlkjihgfedcba9876543210123456789abcdefghijklmnopqrstuvwxyz"; char* ptr1 = result, *ptr2 = result; int temp; do { temp = value; value /= base; //注意temp - value * base有可能为负数 *ptr1++ = table[35 + temp - value * base]; } while(value); if(temp < 0) { *ptr1++ = '-'; } *ptr1-- = '\0'; char c; while(ptr1 > ptr2) { c = *ptr1; *ptr1-- = *ptr2; *ptr2++ = c; }}
atoi函数:
int atoi(const char* c) { int n = strlen(c); if(n <= 0) { return 0; } int p = 0; int result = 0; if(c[0] == '-' || c[0] == '+') { p++; } while(p < n && c[p] >= '0' && c[p] <= '9') { result = 10 * result + (c[p] - '0'); p++; } if(c[0] == '-') { result = -result; } return result;}
memcpy函数:
所在头文件:#include< cstring >
声明:void *memcpy(void *dest, const void *src, size_t n);
功能:从src复制n个字节的内容(可以是任意数据类型)到dest指向的内存中。
void* memcpy(void* dst, void* src, size_t n) { if(dst == NULL || src == NULL) { return NULL; } char* pDst = (char*)dst; char* pSrc = (char*)src; //地址重叠且源数据内存在前面 if(src < dst && (char*)src + n > (char*)dst) { while(n >= 0) { *(pDst + n) = *(pSrc + n); n--; } } else { for(int i = 0; i < n; i++) { *(pDst + i) = *(pSrc + i); } } return dst;}
注意使用size_t是为了提高可移植性,比如有的size_t为long unsigned int。如果传一个负数会将符号位当成数值因此一般是一个很大的数。strcpy函数实现类似。
strstr函数:
头文件:#include < string >
声明:char* strstr(char* str1, char* str2);
功能:于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则返回NULL。
char* strstr(char* str1, char* str2) { if(str2 == NULL) { return NULL; } while(str1) { int i = 0; for(; *(str2 + i) != '\0'; i++) { if(*str1 != *(str2 + i)) { break; } } if(*(str2 + i) == '\0') { return str1; } str1++; } return NULL;}
注意”\0”与NULL是不同的,且当str2 == NULL时需要特殊处理,否则*str2程序会挂掉。
0 0
- itoa、atoi、memcpy等函数实现
- atoi、itoa,strcpy,strcmp,memcpy等实现
- atoi()/itoa()/memcpy()实现
- atoi,itoa,sprintf等函数的实现
- memcpy, strcpy, strlen, strcmp, itoa, atoi 的函数实现
- atoi,itoa函数实现
- atoi,itoa,strcpy,strcp,memcpy的实现
- 模拟实现memcpy,memmove,atoi,itoa
- 函数atoi,itoa 的实现
- 函数atoi,itoa 的实现
- atoi和itoa函数实现
- 实现函数atoi和itoa
- atoi和itoa函数实现
- itoa()和atoi()函数实现
- Linux内核中的atoi,itoa等函数
- Linux 内核中的 atoi,itoa 等函数
- crackme itoa atoi 等函数汇编
- Linux内核中的atoi,itoa等函数
- 西电网络赛 - D
- 机器学习之详解Logistic回归
- app如何更换用户头像信息呢?不妨这样做
- 西电网络赛 - E
- 从本质认识JavaScript的原型继承和类继承
- itoa、atoi、memcpy等函数实现
- JavaScript中的对象、类、构造函数
- java类型转换
- Swift:类型推理
- 显示意图与隐示意图定义(intent)
- HDU1301 最小生成树 + Prim +(Prim求最小生成树与Dijkstra求最短路的区别) (如此题不要误解题意为用Dijkstra!)
- redis getshell总结
- IndentationError: unexpected indent python
- C++ 虚函数表解析