字符函数和字符串函数

文章详细介绍了C语言中常用的几个字符串处理函数,包括strlen用于计算字符串长度,strcpy用于复制字符串,strcat用于字符串拼接,以及strcmp用于字符串比较。此外,还提到了字符分类函数,如iscntrl,isdigit等,并提及了字符转换函数tolower和toupper。
摘要由CSDN通过智能技术生成

1. strlen

size_t strlen (const char* str);

strlen 可以用来求字符串的长度,求字符串的长度不包含末尾的'\0'。  

· 字符串以'\0'作为结束标志,strlen 函数返回的是在字符串中'\0'前面出现的字符个数(不包含'\0')。

· 参数指向的字符串必须以'\0'结束。

· 注意函数的返回值为size_t,是无符号的(易错)

strlen 函数的模拟实现

三种方式:

方式1:

//计数器方式
int my_strlen (const char* str)
{
    int count=0;
    while(*str)
    {
        count++;
        str++;
    }
    return count;
}

方式2:

//不能创建临时变量计数器
int my_strlen(const char* str)
{
    if(*str=='\0')
        return 0;
    else
        return 1+my_srelen(str+1);
}

方式3:

//指针-指针的方式
int my_strlen(char* s)
{
    char* p=s;
    while(*p!='\0')
        p++;
    return p-s;
}

2. strcpy

char* strcpy(char* destination,const char* source);

strcpy 会将source地址的字符串拷贝到destination地址处。即将源地址的字符串拷贝到目标地址。

strcpy 返回的是目标空间的起始地址。

· 源字符串必须以'\0'结束。

· 会将源字符串中的'\0'拷贝到目标空间。

· 目标空间必须足够大,以确保能存放源字符串。

· 目标空间必须可变。

strcpy  的模拟实现

char* my_strcpy(char* dest,const char* src)
{
    char* ret=dest;
    assert(dest!=NULL);
    assert(src!=NULL);
    while(*dest++=*src++)
    {
        ;
    }
    return ret;
}

3. strcat

 char* strcat (char* destination,const char* source);

   strcat 函数的功能是实现字符串追加。会从目标字符串的末尾'\0'处开始追加。

并且会将源字符串的'\0'追加过去。该函数返回的是目标空间的起始地址。

· 源字符串必须以'\0'结束。

· 目标空间必须足够大,能够容纳下源字符串的内容。

· 目标字符串必须可以修改。

· 字符串自己给自己追加,会发生死循环,即一直不停的追加。

   原因是:source 永远找不到'\0',就停不下来。

4. strcmp

int strcmp (const char* str1, const char* str2) ;

字符串比较。该函数会从两个字符串的首字符开始比较。若它们的首字符相同,会继续比较下一个字符,直到比较到不同的字符,或者直到有一个字符串指向了末尾的'\0'。

· 标准规定:

  · 第一个字符串大于第二个字符串,则返回大于0的数字。

  · 第一个字符串等于第二个字符串,则返回0。

  · 第一个字符串小于第二个字符串,则返回小于0的数字。

5. 字符分类函数

函数如果他的参数符合下列条件就返回真
iscntrl任何控制字符
isspace空白字符:空格' ',换页'\f',换行'\n',回车'\r',制表符'\t'或者垂直制表符'\v'
isdigit十进制数字0~9
isxdigit十六进制数字,包括所有十进制数字,小写字母a~f,大写字母A~F
islower小写字母a~z
isupper大写字母A~Z
isalpha字母a~z或A~Z

isalnum

字母或者数字,a~z,A~Z,0~9
ispunct标点符号,任何不属于数字或者字母的图形字符(可打印)
isgraph任何图形字符
isprint任何可打印字符,

 字符转换

int tolower  ( int c );        转小写

int toupper ( int c );        转大写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值