#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;
参考资料:
百度百科-字符串