C风格字符串string.h

你离开我真会死。 提交于 2020-01-18 18:56:43

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
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!