使用c函数实现的常用函数
来源:互联网 发布:如何带领团队 知乎 编辑:程序博客网 时间:2024/06/07 10:10
/* strcat的实现 */
#include
char* my_strcat (char* strDest,const char* strSrc)
{
char *ret = strDest;
assert ((strDest != NULL) && (strSrc != NULL));
while (*strDest != '\0')
{
strDest++;
}
while ((*strDest++ = *strSrc++) != '\0')
{
}
*strDest = '\0';
return ret;
}
/* strcpy的实现 */
#include
char* my_strcpy (char* strDest, const char* strSrc)
{
assert ((strDest != NULL) && (strSrc != NULL));
char* address = strDest;
while ((*strDest++ = *strSrc++) != '\0')
{
}
return address;
}
/* split的实现 */
int my_split (char *strOld, char **strNew)
{
assert ((strOld != NULL) && (strNew != NULL));
char *emp = *strNew;
int res = 0;
for (;;)
{
if ((*strOld >= '0') && (*strNew <= '9'))
{
int j = *strOld - '0';
res = res * 10 + j;
strOld++;
}
else if ((*strOld >= 'A') && (*strOld <= 'z'))
{
*emp++ = *strOld;
strOld++;
}
else
{
break;
}
}
return res;
}
/* strcmp的实现 */
int my_strcmp (const char *strDest, const char* strSrc)
{
while (*strDest)
{
if (*strDest != *strSrc)
{
return (*strDest - *strSrc) > 0 ? 1 : -1;
}
strDest++;
strSrc++;
}
if (*strDest)
{
return -1;
}
else
{
return 0;
}
}
/* string 转换为int */
int my_atoi (const char *str)
{
int result = 0;
int sign = 1;
if ('0' <= str[0] && str[0] <= '9' || (str[0] == '-') || (str[0] == '+'))
{
if (str[0] == '+' || str[0] == '-')
{
if (str[0] == '-')
{
sign = -1;
}
else
{
str++;
}
}
}
while (*str>='0' && *str<='9')
{
result = result * 10 + (*str - '0');
str++;
}
return result * sign;
}
/* int 转换为16进制 */
void my_itoa (char *buffer, unsigned int num)
{
int i;
unsigned int tmp;
buffer[0] = '0';
buffer[1] = 'x';
i = 9;
while (num)
{
tmp = num % 16;
if (tmp >= 10)
{
buffer[i] = tmp - 10 + 'A';
}
else
{
buffer[i] = tmp + '0';
}
i--;
num /= 16;
}
while (i >= 2)
{
buffer[i--] = '0';
}
buffer[10] = 0;
}
/* 字符串逆序 */
int str_reversed(char *str)
{
int i = 0;
char temp = 0;
char *ps;
char *pe;
if (!str)
{
return -1;
}
ps = a;
while (*a != 0)
{
a++;
}
pe = a;
for (i=0; i<(pe-ps)/2;i++)
{
temp = *(ps+i);
*(ps+i) = *(pe-i-1);
*(pe-i-1) = temp;
}
return 0;
}
/* 冒泡排序 */
void bubble_sort (int arr[], int size)
{
int i,j,flag,temp;
for (i=1; i<=size-1; i++)
{
flag = 0;
for (j=0; j<=size-i-1; j++)
{
if (arr[j] > arr[j+1])
{
flag = 1;
temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
if (flag == 0)
{
break;
}
}
}
}
/* 链表逆序*/
list reverse_list (list n)
{
if (!n)
{
return n;
}
list cur = n.next;
list pre = n;
list tmp;
pre.next = NULL;
while (NULL != cur.next)
{
tmp = cur;
tmp.next = pre;
pre = tmp;
cur = cur.next;
}
return tmp;
}
/* 判断是否是质数(素数) */
int is_prime (int n)
{
int i;
if (n < 2) return 0;
if (n == 2) return 1;
//判断时只需判断到n的开方即可
for (i=2; i*i<=n; i++)
{
if (n%i == 0) return 0;
}
return 1;
}
//打印小于num的所有素数
void print_prime (int num)
{
int i = 2;
if (num >= 2)
{
printf ("%d",i);
}
//去除偶数
for (i=3; i
{
if (is_prime(i))
{
printf ("%d",i);
}
}
}
/* 递归题 */
//阶乘
int mul (int num)
{
if (num == 1) return 1;
return num*mul(num-1);
}
//斐波那契数列
int fei (int num)
{
if (num==0 || num==1) return num;
return f(num-1) + f(num-2);
}
/* 全局变量模拟栈操作 */
#include
#include
int INDEX;
int data[20];
//入栈
bool push(int d)
{
if (INDEX >= 20)return false;
data[INDEX++] = d;
return true;
}
//出栈
int pop()
{
return data[--INDEX];
}
//返回栈顶
int peak()
{
return data[INDEX-1];
}
//判断栈是否空
bool empty()
{
if (INDEX <= 0) return true;
return false;
}
- 使用c函数实现的常用函数
- C常用函数的实现
- C常用函数的实现
- c常用函数实现
- c常用函数实现
- c常用函数实现
- C字符串常用函数的实现
- C常用函数t的实现
- C函数加密实现及常用字符串处理函数的使用
- 常用的C函数
- 常用的C函数
- 实现C字符串常用函数
- c语言常用函数实现
- [C/C++]一些常用的随机函数实现
- c中多参函数的实现和使用
- 常用函数的使用
- 常用C函数实现 C Standard Library
- 字符串的几个常用函数的C实现
- mysql存储过程详解
- 程序员必须知道的10大基础实用算法及其讲解
- linux下的一些简单命令操作
- LeetCode OJ - Path Sum II
- 计算机网络(自顶向下方法)学习笔记 1.3 网络核心
- 使用c函数实现的常用函数
- java多线程学习与总结
- 在二叉树中求位于先序序列中第k个位置的结点的值
- Struts2标签取值方式
- 论坛看到的一个随机数面试题
- n个元素进栈,共有多少种出栈顺序?
- servlet在eclipse中搭建
- VLine2.0——仿阿里巴巴VIPABC真人视频在线教育(基于Flash支持一对多多对多Web在线视频)
- Crystal Report 在 VS 2010 中的使用和发布