字符串操作的函数

void reverse( char *left, char *right)

{

char temp = 0;

assert(left);

assert(right);

while ( left < right)

{

temp = *left;

*left = *right;

*right = temp;

left++;

right--;

}

}

void leftShift( char *dest,int m)  //左旋k个字符串

{

assert(dest);

int len = strlen(dest);

reverse(dest,dest+m-1);  //前m个字符逆置

reverse(dest+m, dest+len- 1); //后面的字符逆置

reverse(dest, dest + len - 1);//整体逆置

}

int compareString( const char *dest,const char *src)//字符串包含

{

assert(dest);

assert(src);

int store[58] = {0};

int i = 0;

while (*src)

{

store[*src - 65] = 1;

src++;

}

while (*dest)

{

store[*dest - 65] = 0;

dest++;

}

for (i = 0; i < 58; i++)

{

if ( store[i] != 0)

{

return 0;

}

if (i == 57)

{

return 1;

}

}

}

//int compareString(const char *dest, const char *src)

//{

// assert(dest);

// assert(src);

//

// int n_src = strlen(src);

// int n_dest = strlen(dest);

//

// int store[58] = { 0 };

// int i = 0;

// for (i = 0; i < n_src;i++)

// {

// store[src[i]-65] = 1;

// }

// for (i = 0; i < n_dest; i++)

// {

// store[dest[i] - 65] = 0;

// }

// for (i = 0; i < 58; i++)

// {

// if (store[i] != 0)

// {

// return 0;

// }

// if (i == 57)

// {

// return 1;

// }

// }

//}

int maxSum(int arr[],int n) //求子数组的最大和

{

int max = *arr;

int sum = 0;

int i =0;

for (i = 0; i < n;i++)

{

if ( sum >=0)

{

sum += arr[i];

}

else

{

sum = arr[i];

}

if (sum > max)

{

max = sum;

}

}

return max;

}

int checkSys() //检测系统大小端,1,小端;0,大端

{

int num = 1;

return  * (char*)&num;

}

int my_strlen(const char *dest) //求字符串长度

{

assert(dest);

const char *pdest = dest;

while (*pdest++)

{

NULL;

}

return pdest - dest - 1;

}

size_t my_strlen(const char *dest)

{

assert(dest);

const char *pdest = dest;

size_t count = 0;

while (*pdest++)

{

count++;

}

return count;

}

size_t my_strlen(const char *dest)

{

assert(dest);

if (*dest == ‘\0‘)

{

return 0;

}

return ( 1 + my_strlen(dest + 1) );

}

size_t my_strlen(const char *dest)

{

assert(dest);

const char *pdest = dest;

while (*pdest++)

{

NULL;

}

return  (pdest - dest -1);

}

char*  my_strcat( char *dest,const char *src) //字符串的连接

{

assert(dest);

assert(src);

char *ret = dest;

while (*dest)

{

dest++;

}

while (*dest++ = *src++)

{

NULL;

}

return ret;

}

int  my_strcmp(const char *str1,const char *str2)// 字符串的比较

{

assert(str1);

assert(str2);

while ( *str1 == *str2 )

{

if ( *str1 == ‘\0‘)

{

return 0;

}

str1++;

str2++;

}

return (*str1 - *str2);

}

char * my_strcpy(char *dest,const char *src) //字符串的拷贝

{

assert(dest);

assert(src);

char *ret = dest;

while ( *dest++ = *src++)

{

NULL;

}

return ret;

}

char * my_strstr(const char *dest,const char *src) //查找源字符串在目的字符串中的位置

{

assert(dest);

assert(src);

const char *pdest = dest;

const char *psrc = src;

const char *s1 = NULL;

const char *s2 = NULL;

while (*pdest)

{

s1 = pdest;

s2 = psrc;

while ( (*s1!=‘\0‘) && (*s2!=‘\0‘)&&(*s1 == *s2))

{

s1++;

s2++;

}

if ( *s2 == ‘\0‘)

{

return (char *)pdest;

}

pdest++;

}

return NULL;

}

void *my_memmove( void *dest,const void *src,size_t count)//memmove实现

{

assert(dest);

assert(src);

char *ret = (char *) dest;

char *pdest = (char *) dest;

const char *psrc = (char *)src;

if ( (pdest >psrc) && pdest<(psrc+count))

{

while (count--)

{

*(pdest + count) = *(src + count);  //内存重叠拷贝

}

}

else

{

while (count--)

{

*pdest++ = *psrc++;

}

}

return ret;

}

时间: 2024-10-14 08:31:20

字符串操作的函数的相关文章

go语音之进阶篇字符串操作常用函数介绍

下面这些函数来自于strings包,这里介绍一些我平常经常用到的函数,更详细的请参考官方的文档. 一.字符串操作常用函数介绍 1.Contains func Contains(s, substr string) bool 功能:字符串s中是否包含substr,返回bool值 示例: fmt.Println(strings.Contains("seafood", "foo")) fmt.Println(strings.Contains("seafood&qu

数组、集合、字符串操作、函数小结

数组中存储的是连续的同一类型的数据. 一维数组: 定义: 数据类型[] 数组名 = new 数据类型[数组长度]; 数据类型[] 数组名 = new 数据类型[数组长度]{元素1,元素2,元素3......}; 例如:1. int[] a = new int[5];   2. int[] a = new int[]{1,2,3,4,5} 问题:示例 2 中数组长度可不可以不写,请在评论中回答 说明: 1.数据类型[] 表示数组类型  数组名 表示数组变量  new 表示创建  数据类型[数组长度

JavaScript中常见的字符串操作函数及用法汇总

1.字符串转换 字符串转换是最基础的要求和工作,你可以将任何类型的数据都转换为字符串,你可以用下面三种方法的任何一种: ? 1 2 var num= 19; // 19 var myStr = num.toString(); // "19" 你同样可以这么做: ? 1 2 var num= 19; // 19 var myStr = String(num); // "19" 或者,再简单点儿: ? 1 2 var num= 19; // 19 var myStr =

【整理】C语言中常见的字符串操作函数

需求开发中经常会用到很字符串操作的函数,现整理常用函数如下: 函数名: strcpy 功  能: 拷贝一个字符串到另一个 用  法: char *strcpy(char *destin, char *source); 示例如下: <span style="font-size:24px;">#include <stdio.h> #include <string.h> int main() { char desstr[10]; char *srcstr

mysql之字符串操作

写在前面 上篇文章学习了mysql常用的日期操作的函数,这篇文章将学习mysql的字符串操作的函数. 系列文章 mysql之创建数据库,创建数据表 mysql之select,insert,delete,update mysql之group by,order by mysql之count,max,min,sum,avg,celing,floor mysql之日期函数 mysql实战 1.ASCII(str) select ascii('a'); select ascii('ab'); select

Loadrunner脚本编程(4)-数据类型操作和字符串操作

http://www.360doc.com/content/10/0806/13/1698198_44078277.shtml 一,数据类型转换 没有使用过C编程的LoadRunner脚本编写者会发现在数据类型转化方面比较困难.下面介绍这方面的知识. 1.  相似函数的输出在不同的位置 象很多C函数一样,使用atoi函数的结果即为返回值 如intResult = atoi( charY ); 而:itoa的返回结果为第二个参数. itoa( intX, charY, 10); 第一个参数是需要转

postgresql--与字符串相关的函数和操作符

楔子 我们在筛选数据的时候,很多时候要对字符串进行一些处理,下面来看看postgresql支持哪些字符串的操作吧 数据集如下 select * from t; 支持字符串操作的函数或者操作符 || 将多个字符串进行拼接 -- 需要注意的是,在pgsql中,所有的字符串都必须用单引号,双引号的话会被解释为字段 -- 为什么这么设计,是因为在pgsql中存在着大小写的问题,不管你查询的时候字段是大写还是小写,pgsql都会给你转成小写 -- 可如果这个时候表中的字段是大写的话,那么就会报出字段不存在

条件、循环、函数定义、字符串操作练习

注意标准库的两种导入与使用方式,建议大家采用<库名>.<函数名>的方式. 对前面的代码进行优化,用for,while,if,def实现: 用循环画五角星 1 import turtle 2 3 turtle.fillcolor("red") 4 turtle.begin_fill() 5 for i in range(5): 6 turtle.forward(100) 7 turtle.right(144) 8 turtle.end_fill() 用循环画同心圆

JS 字符串 时间 数字函数操作 事件

字符串  操作 var s="abcdefg" s.tolowerCase()   转小写 s.toupperCase()   转大写 s.substring(2,5)   索引下标从0开始  从第3个开始截取5位 s.substr(2,5)          同上 假设 s="a,b,c,d,e,f,g" s.split(',')   有逗号  用逗号隔开字符串  好几个元素一个元素 例如: 1 var s = "a,b,c,d,e,f,g";