
与字符串相关的操作的头文件: string.h
原型: strcpy(str1c语言strchr函数,str2);
功能: 将字符串str2复制到字符串str1并覆盖str1的原始字符串,该字符串可用于为字符串变量分配值
返回: str1
注意:
1)字符串str2将覆盖str1中的所有字符,
2)字符串str2的长度不能超过str1,
3)复制原则: 从第一个元素开始,以\ 0结尾
int main(int argc, char const *argv[]) { char *str1 = "hello world"; char *str2; // 功能:把str1的内容拷贝到str2,参数为字符数组指针 strcpy(str2, str1); printf("str2 = %s\n", str2); char str3[15] = "hello\0 world"; char str4[15]; //拷贝原理:从首元素开始,遇到\0结束 strcpy(str4, str3); printf("str4 = %s\n", str4); return 0; }
输出
str2 = hello world
str4 = hello

原型: strncpy(str1,str2,n);
功能: 将字符串str2的前n个字符复制到字符串str1的前n个字符
返回: str1
注意:
1)str1中的所有字符串都不会被清除,只更改前n个字符串,
2)n不能大于字符串str1,str2的长度
3)但是,如果使用strncpy_s,则将清除str1中的所有字符串
int main(int argc, char const *argv[]) { char str1[] = "day day up"; char str2[] = "you are"; strncpy(str1, str2, strlen(str2)); printf("%s\n", str1); // you are up return 0; }
原型: strcat(str1,str2);
功能: 将字符串str2添加到字符串str1的末尾,即连接两个字符串
返回: str1

int main(int argc, char const *argv[]) { char str1[] = "hello "; char str2[] = "world"; strcat(str1, str2); // hello world printf("%s\n", str1); return 0; }
原型: strncat(str1,str2,n);
功能: 将字符串str2的前n个字符添加到字符串str1的末尾
返回: str1
注意: 拼接后的长度不能超过字符串数组str1的长度
int main(int argc, char const *argv[]) { char str1[] = "hello "; char str2[] = "world"; strncat(str1, str2, 2); // hello wo printf("%s\n", str1); return 0; }
原型: strlen(str1);
功能: 计算字符串str1的长度
返回: 一个int值
注意: 字符串的长度不包含字符'\ 0'
{ char *str1 = "hello world"; char *str2 = "hello,\0 kite"; int l1 = strlen(str1); int l2 = strlen(str2); printf("l1 = %d\n", l1); // 11 printf("l2 = %d\n", l2); // 6 return 0; }

原型: strcmp(str1,str2);
功能: 比较两个字符串,如果两个字符串相等,则返回0;如果str1大于str2(大于,则表示比较从两个字符串的第一个字符开始,如果两个字符相同,则继续比较. 如果发现两个字符不相等,并且str1中字符的ASCII码大于str2中的字符,表示str1大于str2),并返回正数;如果str1小于str2,则返回负数(不一定为-1);如果字符串str1的长度大于str2,并且str2的字符与str1前面的字符相同,则相对于str1大于str2的字符串也进行处理
原型2: strncmp(str1,str2,n);
功能2: 比较两个字符串的前n个字符
原型3: stricmp(str1,str2); (在Windows中使用stricmp,在Linux中使用strcasecmp)
功能3: 忽略两个字符串中的大小写比较字符串,这对大小写不敏感
注意: 如果直接在VS2017中使用stricmp,将提示以下错误:

查看原因和解决方法: stricmp错误,即改用_stricmp
返回: 0或正数或负数
char str1[] = "Wearecsdn!"; char str2[] = "Wearecsdn!"; char str3[] = "Wearea!"; char str4[] = "Wearef!"; char str5[] = "Weare"; char str6[] = "weAreCsdn!"; int cmp1 = strcmp(str1, str2); //cmp1=0 int cmp2 = strcmp(str1, str3); //cmp2=1 int cmp3 = strcmp(str1, str4); //cmp3=-1 int cmp4 = strcmp(str1, str5); //cmp4=1 int cmp5 = strncmp(str1, str2, 5); //cmp5=0 int cmp6 = strncmp(str1, str3, 5); //cmp6=0 int cmp7 = strncmp(str1, str4, 5); //cmp7=0 int cmp8 = strncmp(str1, str5, 5); //cmp8=0 int cmp9 = _stricmp(str1, str6); //cmp9=0

原型: strchr(str,c);
功能: 找到字符c在字符串中首次出现的位置
原型2: strrchr(str,c);
功能2: 从后到前查找字符串str中字符c的第一个出现
原型3: strstr(str1,str2);
功能3: 在字符串str1中查找字符串str2的位置,如果找到,则返回str1中str2的第一个字符的位置的指针,如果找不到,则返回NULL
返回: 指向字符c位置的指针,如果找不到字符c,则返回空指针NULL
{ // strchr查询字符 和 strstr查询字符串函数 char *str = "no one can help you"; // 在字符串中查询字符 h ,如果存在,返回 h 的地址 // 如果不存在,返回NULL char *s = strchr(str, 'h'); if(s){ printf("存在字符:%c\n", *s); } else { printf("不存在字符\n"); } // 如果存在,返回字符串所在位置的首地址 // 否则返回NULL char *st = strstr(str, "help"); if(st){ printf("存在字符串:%p\n", *st); //注意:此处返回字符串所在元素首地址,也就是一个字符串数组,所以不用取地址值*st // 因为对一个字符串(字符数粗)取地址值 *buf 是没有用的,它本来就是一个指针,取到的 // 会是指针的值,而非指针所指向的值 // 关于指针类型变量:&a取地址是值所在的地址值(指针变量),*st表示指针变量所指向的值,和定义时一样 // 这两个的操作刚好是相反的 } else { printf("不在在字符串\n"); } return 0; }
原型: strpbrk(str1c语言strchr函数,str2);
功能: 依次检查字符串str1中的字符,当字符串str2中也包含测试字符时,停止检查并返回字符位置
返回: 指向str1中两个字符串中包含的第一个字符的位置的指针
char str1[] = "We12are34csdn!"; char str2[] = "32"; char* ret1; ret1 = strpbrk(str1, str2); //*ret1 = 2 int r1 = ret1 - str1; //r1 = 3 printf("%c\n", *ret1); printf("%d\n", r1);
atoi(str); //将字符串转换为int整数
atof(str); //将字符串转换为双浮点数
atol(str); //将字符串转换为长整数
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-165119-1.html
加油啊看好你哟~
中国食品生产赃乱差
题外带句