一月二十三号记录
我们在编写程序时,经常会对字符和字符串进行操作,这些操作通过for和if等方式可以达到效果,但效率总是有些低效,故在C语言标准库函数有字符函数和字符串函数可供我们使用,从而提高编程效率和程序性能。
下方记录学习了一些常用的函数。
字符串处理函数
strcpy复制;strcat连接;strcmp比较;strupr小写转大写;strlwr大转小;strlen求长度
字符串复制
strcpy(目的字符数组名,源字符数组名);
strcpy函数可将源字符数组中的字符串复制到目的字符数组中,当然字符串结束标志“ ”也 一并复制。
需要注意的是:1、目的字符数组必须有足够的长度,否则无法装入字符串中的所有字符。
2、目的字符数组必须写成数组名形式,而源字符数组可以是是字符数组名也 可以是一个字符串常量,这时相当于把一个字符串赋予一个字符数组。
3、不能用赋值语句将一个字符串或字符数组直接赋给另一个字符数组。
4、其实这是一种覆盖。
写个例子:
#include#include int main() { char str1[100] = "Hello World!"; char str2[] = "Hello World!"; char str_temp1[100] = "a"; char str_temp2[100] = "a"; printf("%sn",str1); printf("%sn",str2); printf("%sn",str_temp1); printf("%sn",str_temp2); char* p; p = str2; strcpy_s(str_temp1,str1); strcpy_s(str_temp2,p); //这个“_s”是vs的安全检查要求的。 printf("%sn",str1); printf("%sn",str2); printf("%sn",str_temp1); printf("%sn",str_temp2); return 0; }
字符串连接
strcat(目的字符数组名,源字符数组名);
strcat函数可以将一个字符串连接到另一个字符串的末尾,删去前者末尾的“ ”,二者组合成一个新的字符串。
当然,目的字符数组必须有足够的长度,否则无法装下源字符数组。
写个例子:
#include#include int main() { char str1[100] = "Hello "; char str2[] = "World!"; printf("%sn%sn", str1, str2); strcat_s(str1, str2); printf("%sn%sn", str1, str2); return 0; }
字符串比较
strcmp(字符数组名1,字符数组名2);
strcmp可以将一个字符串与另一个字符串从首字母开始,按照ASCII码的顺序进行逐个比较, 并由函数返回值返回比较结果。
返回值含义如下:1、字符串1==字符串2,返回值为0;
2、字符串1>字符串2,返回值为1;
3、字符串1<字符串2,返回值为-1。
写个例子:(像是在判断密码对错)
#include#include int main() { char str1[] = "123456"; char str2[] = "123456"; if (strcmp(str1, str2)) { printf("FALSEn"); } else { printf("TRUEn"); } return 0; }
字符串大小写转换
strupr(字符串);
//小写字母转大写字母,其他不变。
strlwr(字符串);
//大写字母转小写字母,其他不变。
写个例子:
#include#include int main() { char str1[100]; scanf_s("%s", &str1, 100); _strupr_s(str1); _strlwr_s(str1);//最终字母全部变成小写 printf("%s", str1); return 0; }
获得字符串长度
strlen(字符数组名);
strlen可以用于计算字符串中除了“ ”外所有字符的数量,并将其作为函数返回值返回。
写个例子:
#include#include int main() { char str1[100]; scanf_s("%s", &str1, 100); printf("%d", int(strlen(str1)));//这里用了强制类型转换 return 0; }



