c语言编程笔录

首页 >   > 笔记大全

笔记大全

c语言strlen用法详解

更新时间:2023-11-30

段落一:什么是strlen函数

在C语言中,strlen函数是一个非常常见和常用的字符串操作函数。strlen函数用于返回一个字符串的长度,即该字符串中字符的数量,不包括字符串结尾的空字符(‘\0’)。该函数在string.h头文件中声明,其语法格式为:
int strlen(const char *str);

该函数的参数str为要计算长度的字符串,其返回值为该字符串中的字符数。需要注意的是,参数字符串必须以空字符('\0')结尾。

    
        #include 
        #include 
        int main()
        {
            char str1[] = "hello world";
            int len1 = strlen(str1);
            printf("字符串\"%s\"的长度是:%d\n", str1, len1);
            return 0;
        }
    

段落二:strlen函数使用示例

strlen函数常与其他字符串函数搭配使用,如strcpy、strcat等。下面是常见的使用方法:

1、计算字符串长度:
下面的示例代码展示了如何使用strlen函数计算一个字符串的长度。

    
        #include 
        #include 
        int main()
        {
            char str[] = "hello world";
            int len = strlen(str);
            printf("字符串\"%s\"的长度是:%d\n", str, len);
            return 0;
        }
    

运行此程序,输出的结果为:"字符串"hello world"的长度是:11"。

2、以空字符结尾的字符串:
在C语言中,字符串必须以空字符('\0')结尾。否则,在调用strlen函数时,因为找不到空字符,会导致程序崩溃或其他错误。

    
        #include 
        #include 
        int main()
        {
            char str1[] = "hello world";
            char str2[] = {'h', 'e', 'l', 'l', 'o', '\0'};
            int len1 = strlen(str1);
            int len2 = strlen(str2);
            printf("字符串\"%s\"的长度是:%d\n", str1, len1);
            printf("字符串\"%s\"的长度是:%d\n", str2, len2);
            return 0;
        }
    

注意,在定义str2时,必须在最后加上一个空字符,否则调用strlen函数时会出现问题。

段落三:strlen函数的返回值

当调用strlen函数时,它返回的是字符串中有效字符的长度,不包括字符串结尾的空字符('\0')。strlen函数返回的值是一个正整数,如果返回0,则表示该字符串为空。

    
        #include 
        #include 
        int main()
        {
            char str1[] = "";
            char str2[] = "hello world";
            int len1 = strlen(str1);
            int len2 = strlen(str2);
            printf("字符串\"%s\"的长度是:%d\n", str1, len1);
            printf("字符串\"%s\"的长度是:%d\n", str2, len2);
            return 0;
        }
    

如果要求一个含有空格的字符串的长度,也可以使用如下的方法。

    
        #include 
        #include 
        int main()
        {
            char str[] = "hello world";
            int len = (int)(strrchr(str, ' ') - str + 1);
            printf("字符串\"%s\"的长度是:%d\n", str, len);
            return 0;
        }
    

段落四:strlen函数的实现原理

在《C专家编程》一书中,有一些字符串长度计算方法,非常有启发性。

1、使用 while 循环,实现 strlen 函数:

    
        size_t strlen(const char *str)
        {
            size_t len = 0;
            while (*str++ != '\0')
            {
                len++;
            }
            return len;
        }
    

此处使用了指针的自增操作,所以需要非常熟悉指针的使用。

2、使用 for 循环,实现 strlen 函数:

    
        size_t strlen(const char *str)
        {
            size_t len = 0;
            for(; *str != '\0'; str++)
            {
                len++;
            }
            return len;
        }
    

3、使用指针计算长度,实现 strlen 函数:

    
        size_t strlen(const char *str)
        {
            const char *end = str;
            while(*end)
            {
                end++;
            }
            return (size_t)(end-str);
        }
    

这种方法中,首先将指针 end 设置为指向字符串 str 的开头,然后通过循环找到字符串结束位置,最后还原一下指针的偏移。