c语言中操作字符串的函数
#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;
}
更多精彩

