🦄个人主页:-雷阵雨-
🦄专栏:c语言
⚙️操作环境:Visual Studio 2019
目录
一:前言
本篇博客为大家叙述一些重要的字符串函数讲解。
包括: gets(),puts() , strcat() , strcpy() , strcmp() , strlen() , strstr() , strtok() 。
注意做笔记:在使用字符串函数处理函数时,必须使用头文件<string.h>。
二:字符串函数
一:gets()函数
get(字符数组)函数—输入字符串函数,就类似于scanf()。
作用:从终端输入一个字符串到字符数组。
代码如下:
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> int main() { char str[10]; gets(str); printf("%s", str); return 0; }
二:puts()函数
puts(字符数组)函数—输出字符串函数。
作用:输出字符串到终端(“\0”之前所有字符)。
代码如下:
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> int main() { char str[10]; gets(str); /*printf("%s", str);*/ puts(str); return 0; }
三:strcat()函数
strcat()函数:
strcat()函数参数:destination为目标字符串,sourse为源字符串。
作用:将源字符串,追加到目标字符串的末尾。
const 起到定值的作用。
代码如下:
int main() { char str1[20] = "hello"; char str2[10] = "world"; strcat(str1, str2); printf("%s", str1); return 0; }
注意:1:目标空间要有“\0”;目标空间足够大。
2:源字符串必须要有“\0"。
3:最好自己不要给自己追加。
四:strcpy()函数 (strncpy()函数)
strcpy()函数:
strcpy()参数: destination为目标字符串,sourse为源字符串。
代码如下:
int main() { char str1[20] = "hellooo"; char str2[20] = "world"; strcpy(str1, str2); printf("%s", str1); return 0; }
注意:
1:目标空间要有“\0”;目标空间足够大。
2:源字符串必须要有“\0"。
3:也会将与字符串的“\0”拷贝到目标空间
4:直接覆盖。下面我说一个可以有字符限制的覆盖strncpy()。
strncpy()函数:
代码如下:
int main() { char str1[20] = "hellooo"; char str2[20] = "world"; strncpy(str1, str2,4); printf("%s", str1); return 0; }
编译后,我要求打印4个字符拷贝到str1,其余的部分str1自动补充。
五:strcmp()函数
strcmp()函数:
字符串比较不可以直接用操作符进行比较,必须使用库函数进行比较。
比较规则:
代码如下:
int main() { char str1[20] = "aellooo"; char str2[20] = "aorld"; int d = strcmp(str1, str2); if (d==0) { printf("两字符串相等"); } else if (d > 0) { printf("1"); } else { printf("-1"); } return 0; }
因为在strcmp函数中判断传递一个随机值,因为只有三种判断区间,索性直接赋给三个值。
六:strlen()函数
strlen()函数:
注意重点:求字符串长度,是以字符串“\0”作为结束标志,返回“\0前面出先的字符个数” (不包括“\0”)。
必须以“\0”结束。
代码如下:
int main() { char str1[20] = "hellooo"; char str2[20] = "world"; printf("%d", strlen(str1)); return 0; }
七:strstr()函数
strstr()函数:
就相当于字符串中找字符串,然后返回找到首次出现的地址。
代码如下:
int main() { char str1[20] = "hellooo"; char str2[20] = "ell"; char* ret = strstr(str1, str2); if (ret != NULL) { printf("%s", ret); } else { printf("找不到"); } return 0; }
注意:在strstr()中的两个参数是数组的地址,然后用用指针接收。
八:strtok()函数
strtok()函数:
这个定义好繁琐,我的理解:首先有两个数组,一个是我需要分割的数组,另一个是我分割数组所用的元素(其实大部分就是字符),然后用第二个数组去把第一个分割,然后返回的是首指针,并打印,当在正在扫描的字符串中到达字符串的末尾(即空字符)时,始终返回空指针。
代码如下:
int main() { char str1[20] = "he@llo.oo"; char cop[20]; strcpy(cop, str1); char str2[] = "@."; char* ret = NULL; for (ret = strtok(cop, str2); ret != NULL; ret = strtok(NULL, str2)) { printf("%s\n",ret); } return 0; }
我们不要去使用原数组,我们重新拷贝一个。
三:总结
字符串里面我在我感觉就是strcpy(),strstr()常用,就是有时候“\0”一定要对,在对字符串求长,追加,对"\0"要求还是很严格。
把字符串和字符数组加以辨别,就是“\0”的有无。
有不足之处,望佬纠正,感谢❀