;sizeof是求a占的内存字节数。a=strcmp(chara,charb):比较两个字符串。(a=0,a=b),(a<0,a<b),(a>0,a>b)"og:type" content="webpage">;sizeof是求a占的内存字节数。a=strcmp(chara,charb):比较两个字符串。(a=0,a=b),(a<0,a<b),(a>0,a>b)" /> ;sizeof是求a占的内存字节数。a=strcmp(chara,charb):比较两个字符串。(a=0,a=b),(a<0,a<b),(a>0,a>b)"> 编程实现字符串拷贝、比较功能,要求不能使用系统库函数strcpy、strcmp_语言综合_内存溢出

阅读22

编程实现字符串拷贝、比较功能,要求不能使用系统库函数strcpy、strcmp,第1张

strlen(chara):求a中字符的个数,不包括最后的

\0;

sizeof是求a占的内存字节数。a=strcmp(chara,charb):比较两个字符串

。(a=0,a=b),(a<0,a<b),(a>0,a>b);

strcpy(chara,charb):把b的内容拷贝给a;

substr(strat,length):返回从strat为起始位置长度为length的一个字符串;

strrev(chara)把字符串a的所有字符的顺序颠倒过来(不包括空字符null);

strcat(chara,charb)把字符串b连接到字符串a尾部。

#include<iostreamh>

#include<stringh>

void

main()

{

char

a="test1";

char

b="test12";cout<<strlen(a)<<endl;//此处

输出5,是由test1\0得出,\0不计算

cout<<sizeof(a)<<endl;//此处输出4,a为指针,占四个字节

char

c[20]="test123";

int

result

=strcmp(a,b);

cout<<

result<<endl;//

此处输出为-1

char

p1=strcat(c,b);

cout

<<p1<<endl;//此处输出为test123test12,要注意c必须要有足够的空间容纳b

char

p2=strcpy(c,a);

cout<<p2<<endl;//此处输出为test1

char

p0=strrev(c);

cout<<p0<<endl;//此处输出为1tset

}

int

strcmp(char

src,char

dst)

函数功能:

比较两个字符串是否相等。

函数解析:

这个函数,在VC的库函数中的定义如下:

int

__cdecl

strcmp

(

const

char

src,

const

char

dst

)

{

int

ret

=

0

;

while(

!

(ret

=

(unsigned

char

)src

-

(unsigned

char

)dst)

&&

dst)

++src,

++dst;

if

(

ret

<

0

)

ret

=

-1

;

else

if

(

ret

>

0

)

ret

=

1

;

return(

ret

);

}

我们需要留意的是这个函数的循环部分,

while(

!

(ret

=

(unsigned

char

)src

-

(unsigned

char

)dst)

&&

dst)

++src,

++dst;VC的库函数似乎非常喜欢在while循环的判断条件

中做一些处理(strcpy等函数的定义中也可看到这样的循环语句),下面我们来分析一下这样做的妙处。

首先,在第一次进行循环条件的判定之前,不管这个循环条件是否满足,都会执行一次这个处理(用src的值减去dst的值)。这和do~while循环有一定的相似性。

do

{

ret

=

(unsigned

char)src

-

(unsigned

char)dst;

src++;

dst++;

}while(

(0=ret)

&&

dst

);

再者,它又比do~while循环多做了一次处理。当循环的最后一次条件判断,不满足循环条件时,do~while直接跳出了,而将处理写在判断条件中,在最后一次判断条件不满足时也会做一次处理。因为将处理内容放在while循环的判断条件中时,是先做处理,再做判断,然后才使变量递增;而do~while循环的顺序是先做处理,再做变量递增,最后做条件判断(循环比前者少做了一次);while循环的顺序是先做判断,再做处理,最后做变量递增。这中间的顺序不同导致的循环次数不同,功能执行语句执行的次数也各不相同。

strcmp

二进制安全字符串比较

说明

int

strcmp(

string

$str1

,

string

$str2

)

注意该比较区分大小写。

参数

str1第一个字符串。

str2第二个字符串。

返回值

如果

str1小于

str2,返回负数;如果

str1大于

str2,返回正数;二者相等则返回

0。(相等时返回0)

示例:

<php

$var1="Hello";

$var2="Hello";

if(strcmp($var1,$var2)==0)

{echo'相等';

}

else

{

echo'不相等';

}

>

strcasecmp

二进制安全比较字符串(不区分大小写)

int

strcasecmp(string$str1,string$str2)

str1

第一个字符串。

str2

第二个字符串。

返回值:

如果

str1

小于

str2

返回

<

0;

如果

str1

大于

str2

返回

>

0;如果两者相等,返回

0。

示例

:

<php

$var1="Hello";

$var2="hello";

if(strcasecmp($var1,$var2)==0){

echo'$var1

is

equal

to

$var2

inacase-insensitive

string

comparison';

}

比较的话,使用strcmp(s1,s2);

若是只要比较前n个字符,则strncmp(s1,s2,n);

若是忽略大小写,则stricmp(s1,s2)

当然还有前n个字符忽略大小写的比较,strnicmp(s1,s2,n);

欢迎分享,转载请注明来源:

内存溢出

原文地址:

https://54852.com/langs/12183579.html
函数
(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
百度离线地图百度离线地图一级用户组
怎样用EXCEL函数多条件筛选出多个数据放在不同的单元格里?
上一篇
2023-05-21
新手入门excel教程要注意什么
2023-05-21

发表评论
请登录后评论...
登录
提交

    评论列表(0条)
保存
{label}{label}