C语言--字符串函数汇总(附模拟实现)

strlen

原型

在 C 标准库中,strlen 函数的原型定义在 <string.h> 头文件中,如下所示:

size_t strlen(const char *str);

这里的 size_t 是一个无符号整数类型,它的定义通常在 <stddef.h> 头文件中。strlen 函数的参数 str 是一个指向字符数组的指针,该数组包含一个或多个字符。函数返回的是从 str 指向的字符串的开始位置到第一个空字符('\0')之间的字符数。

使用方法

strlen 函数通常用于获取字符串的长度以便进行字符串操作或比较。下面是一个简单的使用示例:

#include <stdio.h>
#include <string.h>

int main() 
{
   
    const char *str = "Hello, world!";
    size_t length = strlen(str);
    printf("The length of the string is: %zu\n", length);
    return 0;
}

在这个例子中,strlen 函数计算了字符串 "Hello, world!" 的长度,并将其存储在变量 length 中,然后输出这个长度。

模拟实现

strlen 函数的模拟实现通常基于一个循环,遍历字符串中的每个字符,直到遇到空字符为止。下面是一个简单的 strlen 函数实现:

#include <stdio.h>

size_t my_strlen(const char *str) 
{
   
    size_t length = 0;
    while (str[length] != '\0') 
    {
   
        length++;
    }
    return length;
}

int main() 
{
   
    const char *str = "Hello, world!";
    size_t length = my_strlen(str);
    printf("The length of the string is: %zu\n", length);
    return 0;
}

在这个实现中,我们初始化一个 length 变量为 0,然后使用一个 while 循环来遍历字符串。循环继续直到遇到空字符('\0'),此时循环终止,并返回 length 变量的值,即字符串的长度。

请注意,这个模拟实现没有处理空字符串的情况,即空字符串("")会返回 0。在实际的 strlen 函数中,空字符串也会返回 0。

strcpy和 strncpy

strcpy 函数

strcpy 函数用于将源字符串复制到目标字符串中,其原型如下:

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

参数 dest 是指向目标字符串的指针,source 是指向源字符串的指针。strcpy 函数会将 source 指向的字符串复制到 dest 指向的字符串中,直到遇到空字符('\0')为止。函数返回 dest 指针。

使用方法示例:

#include <stdio.h>
#include <string.h>

int main() 
{
   
    char dest[20];
    const char *source = "Hello, world!";
    strcpy(dest, source);
    printf("The copied string is: %s\n", dest);
    return 0;
}

这里的输出结果是Hello, world!

strncpy 函数

strncpy 函数用于将源字符串的前 n 个字符复制到目标字符串中,其原型如下

char *strncpy(char *dest, const char *source, size_t n);

参数 dest 是指向目标字符串的指针,source 是指向源字符串的指针,n 是要复制的字符数。strncpy 函数会复制 source 指向的字符串的前 n 个字符到 dest 指向的字符串中。如果 source 字符串的长度小于 n,则 dest 字符串中剩下的位置会被填充空字符('\0')如果source 字符串的长度大于 n只是将 source的前 n个字符复制到dest的前n个字符,不自动添加'\0',也就是结果dest 不包括'\0',需要再手动添加一个'\0'。函数返回 dest 指针。

使用方法示例:

#include <stdio.h>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值