c语言自定义函数实现字符串的拼接、拷贝、比较大小、求字符串长度等四个功能

Python018

c语言自定义函数实现字符串的拼接、拷贝、比较大小、求字符串长度等四个功能,第1张

#include<stdio.h>

void s_trcat(char *s1,char *s2)//连接两个字符

void s_trcpy(char *s1,char *s2)//字符串s2复制给字符串s1

int s_trcmp(char *s1,char *s2)//两个字符串比较大小

int s_trlen(char *s)//计算一个字符串的长度

int main()

{

char s1[11]="12345", s2[11]="ABCDE"

char x1[11]="12345",x2[11]="SSSKK"

char str1[11]="ABCD",str2[11]="ACB"

char s[11]="ABCDEF"

int n,len

s_trcat(s1,s2)//拼接s1,s2

printf("拼接s1,s2,输出s1\n")

puts(s1)

s_trcpy(x1,x2)//将x2的内容复制给x1

printf("将x2的内容复制给x1,输出x1\n")

puts(x1)

n=s_trcmp(str1,str2)//比较str1与str2大小,返回一个整数,代表比较的结果

if(n==0)

printf("str1与str2相同\n")

if(n==1)

printf("str1大于str2\n")

if(n==-1)

printf("str1小于str2\n")

len=s_trlen(s)//计算字符串s的长度,并返回一个整数(字符串长度),

printf("字符串s的长度:%d\n",len)

}

void s_trcat(char *s1,char *s2)//连接两个字符串

{

char *p=s1

char *q=s2

while(*p)

p++

while(*q)

{

*p=*q

p++

q++

}

*p='\0'//给新字符串尾部加个结束符

}

void s_trcpy(char *s1,char *s2)//字符串s2复制给字符串s1

{

char *p=s1

char *q=s2

while(*p++=*q++)

*p='\0'//给新字符串尾部加个结束符

}

int s_trcmp(char *s1,char *s2)//两个字符串比较大小

{

char *p=s1

char *q=s2

int len1=0,len2=0

while(*p++)

len1++

while(*q++)

len2++

p=s1,q=s2

while(*p!='\0'&&*q!='\0')

{

if(*p>*q)

return 1

if(*p<*q)

return -1

p++

q++

}

if(len1==len2)

return 0//返回0,两个字符串相同

if(len1>len2)

return 1//返回1,前大于后

if(len1<len2)

return -1//返回-1,前小于后

}

int s_trlen(char *s)//计算一个字符串的长度

{

char *p=s

int len=0

while(*p++)

len++

return len//返回字符串长度

}

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#include<ctype.h>

//查找子串sub在src中出现的次数

int cishu(char *src,const char *sub)

{

int count=0

char *pos

pos=src

do

{

pos=strstr(pos,sub)

if(NULL!=pos)

{

count++

pos+=strlen(sub)

}

}while(NULL!=pos)

return count

}

//从from中的第m个字符起复制剩下的字符到to中

void copystr(const char *from,char *to,int m)

{

int i=m-1,j=0

do

{

to[j++]=from[i++]

}while('\0'!=from[i])

}

//统计字符串str中大写字母、小写字母、空格、数字以及其它字符的个数

void tongji(const char *str)

{

int dx=0,xx=0,kg=0,shz=0,qt=0,i=0

while('\0'!=str[i])

{

if(isupper(str[i]))

{

dx++

}

else if(islower(str[i]))

{

xx++

}

else if(isspace(str[i]))

{

kg++

}

else if(isdigit(str[i]))

{

shz++

}

else

{

qt++

}

i++

}

printf("字符串%s中,大写字母有%d个,小写字母有%d个,空格有%d个,数字有%d个,其它字符有%d个!\n",str,dx,xx,kg,shz,qt)

}

int main()

{

char *src="abcsGfS shi ss,ha123oss",*sub="ss",to[strlen(src)+1],str[1024]

printf("%d\n",cishu(src,sub))

copystr(src,to,5)

printf("%s\n",to)

printf("请输入一个字符串:")

gets(str)

tongji(str)

system("PAUSE")

return EXIT_SUCCESS

}

#include<stdio.h>

char *custom_cpy(char *to,char *from)

int main(int argc,char *argv[]){

char *from = "i like c langanger"

char to[30]

char *ptr = custom_cpy(to,from)

printf("%s,%s\n",ptr,to)

return 0

}

char *custom_cpy(char *to,char *from){

if(to == NULL || from == NULL){

return NULL

char *p = to

for(*from!='\0'from++,to++){

*to = *from

*to = '\0'//拷贝完毕之后一定要加一个结束符号

return p

}

扩展资料:

字符串相关函数应用:

1. 连接运算 concat(s1,s2,s3…sn) 相当于s1+s2+s3+…+sn。

例:concat(‘11’,'aa’)='11aa’

2. 求子串。 Copy(s,I,I) 从字符串s中截取第I个字符开始后的长度为l的子串。

例:copy(‘abdag’,2,3)=’bda’;

3. 删除子串。过程 Delete(s,I,l) 从字符串s中删除第I个字符开始后的长度为l的子串。

例:s:=’abcde’delete(s,2,3)结果s:=’ae’;

4. 插入子串。 过程Insert(s1,s2,I) 把s1插入到s2的第I个位置

例:s:=abcinsert(‘12’,s,2)结果s:=’a12bc’;

5. 求字符串长度 length(s) 例:length(‘12abc’)=5;

参考资料:

百度百科-字符串