c语言string函数的用法_string.h

string意思是字符串,也就是字符串库。

我们这里了解下string库的几个重要函数并且实现.

strlen() 求字符串长度;

strcmp() 字符串的比较

strncpy() 字符串的复制;

首先解释下求字符串的长度:

strlen()的用法是,strlen(字符串),将会返回一个整数.首先重点:只能是字符串。

strlen的实现

int strlen(char *p)
{
int length;
length=0;
while((*p++)!='0')
{
length++;
}

8b85581c0db2370dd68a0451743ef1f5.png

分析:

之前的章节中讲解过,char string[5]里面只能放4个字符,因为系统要在最后放置一个'0'作为字符结束标记。

当字符串等于'0'的时候,代表字符串结束。

strcmp() 字符串的比较:

strcmp("字符串1","字符串2");

ANSI C规定字符串1小于字符串2,返回小于0的数.字符串1等于字符串2,则返回0。字符串1大于字符串2的话,则返回大于0。

因为是初步实现,我们选择实现比较简单的

设定这三种返回方式:

字符串1大于字符串2时,返回1;

字符串1等于字符串2时,返回0;

字符串1小于字符串2时,返回-1;

比较的方法是:你可以将“abc”跟"aabcd"理解为34800跟33487,这样子比较,当然是先比较a,然后在比较b,如果不相同,则直接返回,否则直到等于'0'。这里比较是比较ascii码,字母不能比较,但是字母的ascii码是可以比较大小的。

strcmp实现方式:

代码:

int strcmp(char *p1,char *p2)
{
int a=0;
while(*p1==*p2&&*p1)
{
p1++;
p2++;
}
a=*p1-*p2;
if(a < 0)
return -1;
else if(a > 0)
return 1;
return 0;
}

分析:

重点就在于while(判断语句):首先我们判断*p1和*p2是否相等,再去判断*p1是否为'0'。

&&是两边都要相等,如果p1不等于p2或者是p1等于'0'时,while循环结束,这时判断字符的ascii码大小.('0'就是字符0的意思,ascii码为48,而字符最小为65)

strcpy(“字符串1”,”字符串2“) 字符串的复制:

strcpy是将字符串2的内容覆盖到字符串1的内容。比如strcpy("abcde",1234),那么字符串1就变为1234。

值得注意的一点是,字符串不管是指针字符串或者是字符串数组都是传递地址。

如果字符串1或者字符串2为空,则返回NULL。否则会返回字符串1的地址。

代码:

char* strcpy(char *str1,char* str2)
{
char *p=NULL;
if(str1==NULL||str2==NULL)
{
return NULL;
}
p = str1;
while(*str2!='0')*str1++=*str2++;
return p;
}

分析:NULL是空指针的意思。形参是2个指针,然后通过指针对字符串数组或者是字符串指针进行操作。当然了,字符串1不能为常量指针(例如char *c="abcd",这样子是不行的,因为它是指一个常量的地址,而你不能对这个地址里的内容进行更改。)

我这里不仅仅是说教你认识库函数,而是了解这个库函数是怎么去实现的,这是更重要的。

如果想看其他更多详情的话,可以看看点击查看原文,会比较详细,这里只是提及些比较常用的string库函数

现在关注号并且回复c语言资料可获得c语言视频一套及若干资料。寒假期间会开设acm课程

课程会逐渐加深变难,希望可以一同进。

---------------------------------------------------------------------

想了解更多,可以关注公众号"程序员快速修炼

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值