任务二-----<string.h>

1、strlen函数

strlen函数的功能是计算字符串的长度并返回吗该字符串的长度

代码实现:

int strlen(char c[])
{
	int ans=0;
	for(int i=0;c[i]!='\0';i++)
	{
		ans++;
	}
	return ans;
}

strlen函数的使用:

#include<stdio.h>
int strlen(char c[])
{
	int ans=0;
	for(int i=0;c[i]!='\0';i++)
	{
		ans++;
	}
	return ans;
}
int main()
{
	char a[100]="helloworld!";
	int len=strlen(a);
	printf("%d",len);
	return 0;
}

输出结果为11。

调试结果:

 

2、strcmp函数

这个函数用于比较两个字符串并根据比较结果返回整数。若str1=str2,则返回零;若str1<str2,则返回负数;若str1>str2,则返回正数。

代码实现:

int strcmp(char a[],char b[])
{
	int lena=0,lenb=0;
	for(int i=0;a[i]!='\0';i++)
	{
		lena++;
	}
	for(int i=0;b[i]!='\0';i++)
	{
		lenb++;
	}
	if(lena==lenb)
	{
		return 0;
	}
	else if(lena>lenb)
	{
		return 1;
	}
	else
	{
		return -1;
	}
	    
}

strcmp函数的使用

#include<stdio.h>
int strcmp(char a[],char b[])
{
	int lena=0,lenb=0;
	for(int i=0;a[i]!='\0';i++)
	{
		lena++;
	}
	for(int i=0;b[i]!='\0';i++)
	{
		lenb++;
	}
	if(lena==lenb)
	{
		return 0;
	}
	else if(lena>lenb)
	{
		return 1;
	}
	else
	{
		return -1;
	}
	    
}
int main()
{
	char a[100]="helloworld!";
	char b[100]="hello";
	printf("%d",strcmp(a,b));
	return 0;
}

输出结果为1。

调试结果:

 

3、strcpy函数

strcpy的功能是将字符串str2的内容复制到字符串str1当中,并返回字符串str1。

代码实现:

char *strcpy(char *str1,char *str2)
{
	str1=str2;
	return str1;
}

strcpy函数的使用:

#include<stdio.h>
char *strcpy(char *str1,char *str2)
{
	str1=str2;
	return str1;
}
int main()
{
	char a[100]="helloworld!";
	char b[100]="I am Amy";
	printf("%s",strcpy(a,b));
	return 0;
}

输出结果为I am Amy.

调试结果:

 

4、strcat函数

这个函数的作用是将两个字符串连接起来。

代码实现:

char *strcat(char *str1,char *str2)
{
	char *str3=str1;
	while(*str1!='\0')
	{
		str1++;
	}
	while(*str1++ = *str2++)
	{
		NULL;
	}
	return str3;
}

函数的使用:

#include<stdio.h>
char *strcat(char *str1,char *str2)
{
	char *str3=str1;
	while(*str1!='\0')
	{
		str1++;
	}
	while(*str1++ = *str2++)
	{
		NULL;
	}
	return str3;
}
int main()
{
	char a[100]="Hello";
	char b[100]=" I am Amy";
	printf("%s",strcat(a,b));
	return 0;
}

输出结果为:Hello I am Amy

调试结果:

 

5、strchr函数

函数的功能是在参数str所指向的字符串中搜索第一次出现字符c(一个无符号字符)的位置。

代码实现:

char *strchr(char *s,int c)
{
	char *str=s;
	while(*str!=c&&*str!='\0')
	{
		str++;
	}
	if(*str!='\0'){
		return str;
	}else{
		return 0;
	}
}

函数的使用:

#include<stdio.h>
char *strchr(char *s,int c)
{
	char *str=s;
	while(*str!=c&&*str!='\0')
	{
		str++;
	}
	if(*str!='\0'){
		return str;
	}else{
		return 0;
	}
}
int main()
{
	char a[100]="Hello";
	char ch='l';
	printf("%s",strchr(a,ch));
	return 0;
}

输出结果为:llo。

调试结果:

 

6、strstr函数

strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回 str1字符串从 str2第一次出现的位置开始到 str1结尾的字符串;否则,返回NULL。

代码实现:

char *strstr(char *str1,char *str2)
{
	char *str3=str1;
	while(*str1!=*str2&&*str1!='\0')
	{
		str1++;
		str3++;
	}
	while(*str2!='\0')
	{
		if(*str1==*str2)
		{
			str1++;
			str2++;
		}else
		{
			break;
		}
	}
	if(*str2=='\0')
	    return str3;
	else
	    return 0;
}

代码使用:

#include<stdio.h>
char *strstr(char *str1,char *str2)
{
	char *str3=str1;
	while(*str1!=*str2&&*str1!='\0')
	{
		str1++;
		str3++;
	}
	while(*str2!='\0')
	{
		if(*str1==*str2)
		{
			str1++;
			str2++;
		}else
		{
			break;
		}
	}
	if(*str2=='\0')
	    return str3;
	else
	    return 0;
}
int main()
{
	char a[100]="Hello";
	char b[100]="ll";
	printf("%s",strstr(a,b));
	return 0;
}

输出结果为:llo。

如果b[100]=“lo”,那么输出结果为null,因为字符串a中没有为“lo”的子串。

调试结果:

 

7、strncmp函数

strncmp函数为字符串比较函数,字符串大小的比较是以ASCII 码表上的顺序来决定,功能是把 str1 和 str2 进行比较,最多比较前 n 个字节,若str1与str2的前n个字符相同,则返回0;若s1大于s2,则返回大于0的值;若s1 小于s2,则返回小于0的值。

代码实现:

int strncmp(char *str1,char *str2,int c)
{
	int ans=0,k=0;
	while(k!=c)
	{
		
		ans+=(*str1-*str2);
		*str1++;
		*str2++;
		k++;
	}
	if(ans>0)
		return 1;
	else if(ans==0)
		return 0;
	else
		return -1;
}

函数的使用:

#include<stdio.h>
int strncmp(char *str1,char *str2,int c)
{
	int ans=0,k=0;
	while(k!=c)
	{
		
		ans+=(*str1-*str2);
		*str1++;
		*str2++;
		k++;
	}
	if(ans>0)
		return 1;
	else if(ans==0)
		return 0;
	else
		return -1;
}
int main()
{
	char a[100]="asdfg";
	char b[100]="zxcvb";
	int c=3;
	printf("%d",strncmp(a,b,c));
	return 0;
}

输出结果为-1。

调试结果:

 

8、strncpy函数

strncpy函数用于将指定长度的字符串复制到字符数组中,语法形式为:char *strncpy(char *dest, const char *src, int n),表示把src所指向的字符串中以src地址开始的前n个字节复制到dest所指的数组中,并返回被复制后的dest。

代码实现:

char *strncpy(char *str1,char *str2,int c)
{
	int i;
	for(int i=0;i<c;i++)
	{
		str1[i]=str2[i];
	}
	return str1;
}

函数的使用:

#include<stdio.h>
char *strncpy(char *str1,char *str2,int c)
{
	int i;
	for(int i=0;i<c;i++)
	{
		str1[i]=str2[i];
	}
	return str1;
}
int main()
{
	char a[100];
	char b[100]="Hello!";
	int c=3;
	printf("%s",strncpy(a,b,c));
	return 0;
}

输出结果为:Hel。

调试结果:

 

9、strtok函数

strtok函数的功能是将字符串str1分解为几个字符串。

函数的使用例子:

#include<stdio.h>
#include<string.h>
int main()
{
	char a[100]="this-is-good-program";
	char s[2]="-";
	char *p=strtok(a,s);
	while(p!=NULL)
	{
		printf("%s\n",p);
		p=strtok(NULL,s);
	}
	return 0;
}

调试结果:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值