C语言基础语法第七章字符串 demo5_字符常用操作函数(strlen、strcpy、strncpy、assert、strcat、strcmp、strncmp、strchr、strstr、strtok)
1.strlen:
在 C 语言中,strlen 是一个用于计算字符串的有效长度的函数,其声明如下:size_t strlen(const char *str);
strlen会计算字符串的有效长度 单不包括字符串的结束标志’\0’
2.strcpy:
在 C 语言中,strcpy 是一个用于字符串复制的函数,其声明如下:char strcpy(char dest, const char *src);
strcpy 函数接受两个参数:目标字符串 dest 和源字符串 src。它将源字符串的内容复制到目标字符串中,并返回目标字符串的指针。
需要注意的是,目标字符串 dest 必须具有足够的空间来容纳源字符串 src 的内容,否则会导致缓冲区溢出的错误。
3.strncpy:
在 C 语言中,strncpy 是一个用于字符串复制的函数,其声明如下:
char *strncpy(char *dest, const char *src, int n)
表示把src所指向的字符串中以src地址开始的前n个字节复制到dest所指的数组中,并返回被复制后的dest;
strncpy 函数接受三个参数:目标字符串 dest、源字符串 src 和要复制的最大字符数 n。它将源字符串的内容复制到目标字符串中,最多复制 n 个字符。
strncpy 函数会将 n 个字符复制到目标字符串 dest 中,如果源字符串 src 的长度小于 n,则会在复制完字符后填充零字节 (‘\0’),以保证目标字符串的长度为 n。
需要注意的是,如果源字符串 src 的长度大于或等于 n,则目标字符串 dest 不会自动添加结尾的零字节 (‘\0’)。因此,在使用 strncpy 复制后,需要手动添加结尾的零字节。
4.assert:
assert(des != NULL && src !=NULL);
通过assert进行空判断,assert 的作用是先计算表达式expression,如果其值为假(即为0)
那么它先向 stderr 打印一条出错信息,然后通过调用 abort 来终止程序运行。
需要注意的是,assert 宏通常用于调试和开发阶段,用于验证程序的假设条件。在发布版本的代码中,通常会禁用 assert,以避免在生产环境中触发断言导致程序崩溃。
5.strcat:
在 C 语言中,strcat 是一个用于字符串拼接(追加)的函数,其声明如下:
char *strcat(char *dest, const char *src);
把src所指向的字符串(包括“\0”)复制到dest所指向的字符串后面(删除dest原来末尾的“\0”)。要保证dest足够长,以容纳被复制进来的*src。*src中原有的字符不变。返回指向dest的指针。
strcat 函数接受两个参数:目标字符串 dest 和源字符串 src。它将源字符串 src 的内容追加到目标字符串 dest 的末尾,并返回目标字符串的指针。
需要注意的是,目标字符串 dest 必须具有足够的空间来容纳源字符串 src 的内容,否则会导致缓冲区溢出的错误。
6.strcmp:
在 C 语言中,strcmp 是一个用于字符串比较的函数,其声明如下:
int strcmp(const char *s1,const char *s2);
strcmp 函数接受两个参数:要比较的两个字符串 str1 和 str2。它按照字典序比较两个字符串,并返回一个整数值,表示比较结果的大小关系。
strcmp 函数返回的结果可能有以下三种情况:
如果 str1 等于 str2,则返回值为 0。
如果 str1 小于 str2,则返回值为负数。
如果 str1 大于 str2,则返回值为正数。
7.strncmp:
在 C 语言中,strncmp 是一个用于字符串比较的函数,其声明如下:
int strncmp(const char *str1, const char *str2, size_t n);
功能是把 str1 和 str2 进行比较,最多比较前 n 个字节,若str1与str2的前n个字符相同,则返回0;若s1大于s2,则返回大于0的值;若s1 小于s2,则返回小于0的值。
8.strchr:
在 C 语言中,strchr 是一个用于在字符串中查找指定字符的函数,其声明如下:
char *strchr(const char *str, int c);
strchr 函数接受两个参数:要搜索的字符串 str 和要查找的字符 c。它在字符串 str 中从左至右查找字符 c 的第一次出现,并返回一个指向该字符的指针。
如果找到字符 c,则返回指向该字符的指针;如果未找到字符 c,则返回空指针 (NULL)。
9.strstr:
在 C 语言中,strstr 是一个用于在字符串中查找子字符串的函数,其声明如下:
char *strstr(const char *haystack, const char *needle);
strstr 函数接受两个参数:要搜索的字符串 haystack 和要查找的子字符串 needle。它在字符串 haystack 中查找子字符串 needle 的第一次出现,并返回一个指向该子字符串的指针。
如果找到子字符串 needle,则返回指向该子字符串的指针;如果未找到子字符串 needle,则返回空指针 (NULL)。
10.strtok:
在 C 语言中,strtok 是一个用于分割字符串的函数,其声明如下:
char *strtok(char *str, const char *delimiters);
strtok 函数接受两个参数:要分割的字符串 str 和用于分割的分隔符字符串 delimiters。它将字符串 str 按照 delimiters 中包含的字符进行分割,并返回分割后的子字符串。
在第一次调用时,str 应为要分割的字符串,随后的调用中,str 应传入 NULL,以便继续分割剩余的字符串。
strtok 函数会修改传入的字符串 str,通过在分割位置插入字符串结束符 (‘\0’) 来分割子字符串。因此,调用 strtok 函数后,原始字符串将被改变。