学C的第二十八天【字符串函数和内存函数的介绍(一)】-1

简介: 前言:(1).C语言中对于字符和字符串的处理很是频繁,但是C语言本身没有字符串类型,字符串通常放在 常量字符串 中或者 字符数组 中。

前言:

(1).

C语言中对于字符字符串的处理很是频繁,但是C语言本身没有字符串类型字符串通常放在 常量字符串中或者字符数组

           

(2).

字符串常量 适用于那些对其不做修改字符串函数

1 . 函数介绍

(1). strlen()函数:求字符串(字符数组)长度

函数返回值类型和相关参数:

size_t strlen ( const char * str );

                   

(接收 常量字符指针 ,返回 无符号整数

注意事项:

(1).

字符串以 '\0' 作为结束标志,需要 string.h 头文件strlen函数返回的是在字符串中 '\0' 前面出现的字符个数不包 含 '\0' )。

(2).

参数指向的字符串必须要以 '\0' 结束(不然统计个数为随机值)。

               

(3).

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

image.png

(4).

学会strlen函数的模拟实现(下面第2个模块有)

(2). strcpy()函数:拷贝字符串

函数返回值类型和相关参数:

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

                   

(接收 目标空间指针内容不能被修改的源字符串指针 ,返回 目标空间指针                    bc9f57a0df1e47239d27d5dcf16696dd.png

注意事项:

(1).

源字符串指针指向的字符串复制目标空间指针指向的空间 中,

包括 终止空字符即 \0 ,并在该点停止

(2).

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

               

(3).

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

          (4).

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

               

(5).

目标空间必须可变                                  

(6).

学会strcpy函数的模拟实现(下面第2个模块有)

(3). strcat()函数:追加字符串到另一字符串后

函数返回值类型和相关参数:

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

                   

(接收 目标空间指针内容不能被修改的源字符串指针 ,返回 目标空间指针            


b65bd6861ac249f4a4e9c6172f0b7446.png

注意事项:

(1).

源字符串的副本追加到目标字符串

目的地中的 '\0' 源字符串的第一个字符覆盖

并且 '\0'在新字符串的末尾

需要<string.h>头文件。

(2).

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

               

(3).

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

               

(4).                  

目标空间必须可修改

           

(5).

学会strlen函数的模拟实现(下面第2个模块有)

(4). strcmp()函数:比较两个字符串的大小

函数返回值类型和相关参数:

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

           

(接收 两个常量字符串的首字符指针,返回 一个整数

a868dafd2c40489f91f37f73d6118146.png

注意事项:

(1).

此函数开始比较时会比较每个字符串的第一个字符

如果它们彼此相等,则继续比较下一对

直到 字符不同比较完所有字符都相同为止

(2). 标准规定

                 

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

(假设 “abcdef” 和 “abc” 比较,abc都相等第四次比较时 e>\0,那么"abcdef"更大返回 大于0 的数字

           

           

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

(假设 “abc” 和 “abc” 比较,abc都相等第四次比较时 \0==\0返回 0

                       

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

(假设 “abcdef” 和 “abq” 比较,a和b都相等第三次比较时 c<q,那么"abq"更大返回小于0 的数字

                   

(3).

学会strlen函数的模拟实现(下面第2个模块有)

(5). strncpy()函数:拷贝字符串的num个字符

函数返回值类型和相关参数:

char * strncpy ( char * destination, const char * source, size_t num );

                 

和 strcpy()函数 相同,只是参数多了个拷贝的字符个数            

image.png

注意事项:

(1).

将 源字符串指针 指向的 字符串前num个字符 复制到 目标空间指针 指向的空间 中,

包括 终止空字符,即 \0 ,并在该点停止。(和strcpy()函数类似但限制了拷贝个数

(2).

源字符串拷贝num个字符到目标空间

               

(3).

如果源字符串的长度小于num,则拷贝完源字符串之后,在目标的空间后边追加0直到numf4de59eea7384f9184be6a641e40288e.png

                 

相关文章
|
1月前
|
C语言 C++
C语言 之 内存函数
C语言 之 内存函数
34 3
|
29天前
|
程序员 C++ 容器
在 C++中,realloc 函数返回 NULL 时,需要手动释放原来的内存吗?
在 C++ 中,当 realloc 函数返回 NULL 时,表示内存重新分配失败,但原内存块仍然有效,因此需要手动释放原来的内存,以避免内存泄漏。
|
1月前
|
存储 程序员 编译器
C语言——动态内存管理与内存操作函数
C语言——动态内存管理与内存操作函数
|
1月前
|
编译器 C语言 C++
详解C/C++动态内存函数(malloc、free、calloc、realloc)
详解C/C++动态内存函数(malloc、free、calloc、realloc)
161 1
|
1月前
|
程序员 C语言
C语言内存函数精讲
C语言内存函数精讲
|
25天前
|
存储 C语言
【c语言】字符串函数和内存函数
本文介绍了C语言中常用的字符串函数和内存函数,包括`strlen`、`strcpy`、`strcat`、`strcmp`、`strstr`、`strncpy`、`strncat`、`strncmp`、`strtok`、`memcpy`、`memmove`和`memset`等函数的使用方法及模拟实现。文章详细讲解了每个函数的功能、参数、返回值,并提供了具体的代码示例,帮助读者更好地理解和掌握这些函数的应用。
21 0
|
1月前
|
C语言 C++
c语言回顾-内存操作函数
c语言回顾-内存操作函数
40 0
|
1月前
|
存储 C语言 C++
来不及哀悼了,接下来上场的是C语言内存函数memcpy,memmove,memset,memcmp
本文详细介绍了C语言中的四个内存操作函数:memcpy用于无重叠复制,memmove处理重叠内存,memset用于填充特定值,memcmp用于内存区域比较。通过实例展示了它们的用法和注意事项。
66 0
|
1月前
一刻也没有为它哀悼~接下来登场的是动态内存分配的malloc与realloc以及free函数
一刻也没有为它哀悼~接下来登场的是动态内存分配的malloc与realloc以及free函数
67 0
|
3月前
|
存储 编译器 C语言
【C语言篇】数据在内存中的存储(超详细)
浮点数就采⽤下⾯的规则表⽰,即指数E的真实值加上127(或1023),再将有效数字M去掉整数部分的1。
376 0