C语言本身没有字符串的标识符,C语言的字符串定义有两种方式,char*与char str[]
C语言识别存储字符串,是靠数组的结构,单个字符储存,并在末尾处自动加上 '\0’作为字符串结束的标识。
char*定义的字符串
char* 定义的变量存储在字符常量区,定义的是一个常量。所以char* 一旦定义的就无法修改内部的单个字符。所以通常使用 const char*
char str[]定义的字符串
char str[] 的变量存储在栈上,所以可以通过下标来修改字符串中某个字符。
char* cstr = "string";
printf("%c",cstr[0]); //输出 s
printf("%c",cstr+1); //输出 t
//char* 可以通过下标访问单个字符
cstr[0] = 'S'; // X
//但若是要修改其中的内容,编译就会报错
char str[] = "string";
str[0] = 'S';
printf("%c",str[0]); //输出 S
//数组方式创建 既可以修改单个字符,也可以单个字符访问
strlen()求字符串长度
通过遍历字符串中的字符,遇到'\0'时停止遍历,此时就能得出字符串的长度。char* str = "string";
int len = strlen(str);
strcpy()拷贝字符串
将源字符串中的内容拷贝到目标字符串中
目标字符串的空间必须时可变的且空间足够大能够容纳下源字符串
const char* str = "string";
char copy[];
strcpy(copy,str);
strcat()字符串后追加
在目标字符串后追加一段字符。将删除目标字符串后的'\0',后将追加的字符串添加。如果strcat目标字符串自己的画,将导致无限递归。char str[] = "string";
strcat(str," append");
//此时str为 "string append"
strcmp()比较两个字符串大小
- 第一个字符串大于第二个字符串,则返回大于0的数字
- 第一个字符串等于第二个字符串,则返回0
- 第一个字符串小于第二个字符串,则返回小于0的数字
char* str1 = "abcde";
char* str2 = "abcc";
strcmp(str1,str2);//str1大于str2,返回负数
strstr()寻找子字符串
在目标字符串中检索要查找的小字符串,并返回找到的子字符串。char* str1 = "string";
strstr(str1,"ing");
//返回 ing
strncpy()选择拷贝多少个字符
添加了第三个参数n,表示从源字符串中拷贝多少个字符到目标文件中const char* str= "string";
char copy[];
strncpy(copy,str,3);
//最终返回 “str”
strncat()选择追加多少个字符
添加了第三个参数n,表示从源字符串追加多个个字符到目标字符串中const char* str= "string";
char str2[] = "this is ";
strncpy(str2,str,3);
//返回 this is str
来源:CSDN
作者:代号[K]
链接:https://blog.csdn.net/MPF1230/article/details/104030722