【C语言】模拟实现字符串函数——strlen

简介: 【C语言】模拟实现字符串函数——strlen

前言


C语言strlen()函数用来求字符串的长度(包含多少个字符)。strlen () 函数从字符串的开头位置依次向后计数,直到遇见'\0'为止,然后返回计时器的值。 最终统计的字符串长度不包括'\0'。 需要包含头文件<string.h>


一、strlen函数的应用

arr数组包含了'a' 'b' 'c'以及隐藏的'\0',调用strlen时,在'\0'前计算了'a' 'b' 'c'三个字符的数量,大小为3。

#include<stdio.h>
#include<string.h>
int main()
{
  char arr[] = "abc";
  int len = strlen(arr);
  printf("%d\n", len);
  return 0;
}

当我们将arr数组初始化为以下代码时,此时arr数组中并不存在'\0'或者0这个元素,那我们在调用strlen时,计算到'c',发现后面没有'\0',于是会继续在内存后寻找,直到找到'\0'为止, ,所以此处计算的是一个随机值。

#include<stdio.h>
#include<string.h>
int main()
{
    //char arr[] = "abc";
    //int len = strlen(arr);
    //printf("%d\n", len);
    char arr[] = { 'a','b','c' };
    int len = strlen(arr);
    printf("%d\n", len);
  return 0;
}

二、模拟实现strlen函数

#include<stdio.h>
#include<assert.h>
int MyStrlen(const char* str) 
{
  assert(str != NULL); //断言
  int count = 0;
  while (*str != '\0')
  {
    count++;
    str++;
  }
  return count;
}
int main()
{
  char arr[] = "abc";
  int len = MyStrlen(arr);
  printf("%d\n", len);
  return 0;
}
目录
相关文章
|
2月前
|
C语言 C++
【C语言】解决不同场景字符串问题:巧妙运用字符串函数
【C语言】解决不同场景字符串问题:巧妙运用字符串函数
|
2月前
|
存储 C语言
【c语言】字符串函数和内存函数
本文介绍了C语言中常用的字符串函数和内存函数,包括`strlen`、`strcpy`、`strcat`、`strcmp`、`strstr`、`strncpy`、`strncat`、`strncmp`、`strtok`、`memcpy`、`memmove`和`memset`等函数的使用方法及模拟实现。文章详细讲解了每个函数的功能、参数、返回值,并提供了具体的代码示例,帮助读者更好地理解和掌握这些函数的应用。
27 0
|
2月前
|
存储 安全 编译器
深入C语言库:字符与字符串函数模拟实现
深入C语言库:字符与字符串函数模拟实现
|
2月前
|
C语言
C语言常见字符函数和字符串函数精讲
C语言常见字符函数和字符串函数精讲
|
2月前
|
C语言
【C语言】模拟实现深入了解:字符串函数
【C语言】模拟实现深入了解:字符串函数
|
2月前
|
Serverless 编译器 C语言
【C语言】指针篇- 深度解析Sizeof和Strlen:热门面试题探究(5/5)
【C语言】指针篇- 深度解析Sizeof和Strlen:热门面试题探究(5/5)
|
4月前
|
安全 程序员 C语言
【C语言】字符串函数及其模拟实现
【C语言】字符串函数及其模拟实现
|
4月前
|
C语言
【C语言篇】字符和字符串以及内存函数详细介绍与模拟实现(下篇)
perror函数打印完参数部分的字符串后,再打印⼀个冒号和⼀个空格,再打印错误信息。
64 0
|
4月前
|
存储 安全 编译器
【C语言篇】字符和字符串以及内存函数的详细介绍与模拟实现(上篇)
当然可以用scanf和printf输入输出,这里在之前【C语言篇】scanf和printf万字超详细介绍(基本加拓展用法)已经讲过了,这里就不再赘述,主要介绍只针对字符的函数.
56 0
|
5月前
|
存储 缓存 C语言
【C语言】字符函数,字符串函数,内存函数
C语言中的字符串函数和内存函数
66 0
【C语言】字符函数,字符串函数,内存函数