#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { // 1.memset,设置字符串的内容。一般我们创建一个字符数组,都会设置为0 char s[100]; memset(s, 0, 100); // 将s的内容设置为0,长度为100 // 2.strcat:追加,将字符数组的内容追加到另一个字符数组当中去 char *s1 = "hello"; char s2[] = "world"; strcat(s, s1); strcat(s, " "); strcat(s, s2); printf("s = %s\n", s); // hello world // 3.strncat:和strcat类似,不过在追加的同时可以指定个数 memset(s, 0, 100); // 清空s的内容 strncat(s, "hello world", 3); //只追加三个字符,从头开始追加3个 printf("s = %s\n", s); // s = hel // 4.strlen:计算字符串的长度 printf("%d\n", strlen(s)); // 3 // 5.sprintf:按照指定格式转化字符串,和golang比较类似 memset(s, 0, 100); sprintf(s, "%d %s--%c", 10, "mashiro", 'u'); puts(s); // 10 mashiro--u // 6.字符串转化成其他格式 memset(s, 0, 100); sprintf(s, "%d", 520); printf("%d\n", atoi(s)); // 520 printf("%f\n", atof(s)); // 520.000000 // 7.strcmp:比较两个字符串的内容是否相等,相等返回0,否则返回1。而==则是比较两个地址,相等返回1,否则返回0 char *str1 = "mashiro"; char *str2 = "mashiro"; char str3[] = "mashiro"; printf("%d\n", str1 == str2); // 1 printf("%d\n", str1 == str3); // 0 printf("%d\n", strcmp(str1, str2)); // 0 printf("%d\n", strcmp(str1, str3)); // 0 // 8.strchr:查找某个字符出现的位置,然后匹配到结尾 char *str = "hello world"; puts(strchr(str, 'o')); // o world // 9.strrstr:反向查找某个字符串出现的位置,然后匹配到结尾 puts(strrchr(str, 'o')); // orld // 9.strstr:查找字符串出现的位置,然后匹配到结尾 char *string = "i am loli kon, loli kon"; puts(strstr(string, "loli")); // loli kon, loli kon // 10.strrstr:反向字符串出现的位置,然后匹配到结尾。但是遗憾的是,只是在头文件里面有声明,却没有实现 //puts(strrstr(string, "loli")); // 11.strcpy:将字符数组拷贝到另一个字符数组中 char string1[100]; char *string2 = "satori world"; char *string3 = "mashiro hello"; strcpy(string1, string2); puts(string1); // satori world strcpy(string1, string3); puts(string1); // mashiro hello //可以看到strcpy和strcat类似,但是后者是追加 // 12.strncpy:拷贝的时候指定个数 strncpy(string1, string2, 4); puts(string1); // mashiro hello puts(string1); // satoiro hello //之前的内容没有情况,而是覆盖,所以是sato覆盖了mashiro hello的前4个字符 // 13.从指定位置截取到指定位置 char *string4 = "my name is van"; //我想截取索引4到9的内容,在现在的高级语言的当中,如python golang,可以采用切片的方式[4: 9] //但是c不支持 char *string5 = string4 + 4; //表示指针移动4个单位,此时string5的首地址和string4的索引为4的元素的地址是一样,由于数组是一片连续的存储空间,所以string4 + 4等价于string4[4: ](如Python) puts(string5); // ame is van //然后在此基础之上,再截取5个就可以了 char string6[10]; strncpy(string6, string5, 5); puts(string6); // ame i return 0; }