一、strlen、strcat、strcpy、strcmp、gets、puts定义
Strlen:求字符串长度,遇到’\0’就结束,不算’\0’,比如:”abcd”长度是4
Strcat:拼接两个字符串的,char str1[10] = “abc”,char str2[10] = “edf”; “edf” ,str1:”abcedf”
Strcpy:拷贝字符串的,char str1[10] = “abc”,char str2[10] = “ed”; “ed” ,str1:”ed”
Strcmp:比较字符串大小的,”abc”和”abbc”,从左至右依次比较字符的ASCII值,“abc” > “abbc”
使用scanf和printf需要加stdio这个头文件,使用字符串处理函数,需要加string.h这个头文件。
gets(str1) 功能和scanf(“%s”, str1)一样,gets遇到回车就结束,scanf是遇到回车或者空格就结束
puts(str1)功能和printf(“%s\n”, str1)一样,puts自动会输出’\n’,但是printf需要自己加’\n’才输出’\n’
二、应用
1、strcat代码实现
strcat:拼接两个字符串的,char str1[10] = “abc”,char str2[10] = “edf”; “edf” ,str1:”abcedf”
str2的’e’把str1的’\0’覆盖掉,并且把str2的’\0’也拷贝过去了
strcat(目的字符数组, 源字符数组/源字符串);
Strncat(目的字符数组, 源字符数组/源字符串, n);
功能:将源字符串的前n个字符连接到目标字符数据的后面,注意目标字符数组最后要有’\0’
2、strcpy代码实现
Strcpy:拷贝字符串的,char str1[10] = “abc”,char str2[10] = “ed”; “ed” ,str1:”ed”
将str2的’e’’d’和’\0’都拷贝到str1中了
Strcpy(目的字符数组,源字符数组/源字符串);
Strncpy(目的字符数组,源字符数组/源字符串, n);
功能:将源字符串的前n个字符拷贝到目标字符数组,其余不变
3、strcmp代码实现
Strcmp:比较字符串大小的,”abc”和”abbc”,从左至右依次比较字符的ASCII值,“abc” > “abbc”
Strcmp(字符数组1/字符串1, 字符数组2/字符串2);
比较规则:依次比较两个字符串的字符的ascii值,直到不相等或者是两个都是’\0’
返回值:
大于0 字符串1 > 字符串2
小于0 字符串1 < 字符串2
等于0 字符串1 == 字符串2
Strncmp(字符数组1/字符串1, 字符数组2/字符串2,n);
功能:比较字符串1和字符串2的前n个字符
结束小彩蛋:
(1)Char str[] = {‘a’, ‘b’, ‘c’, ‘d’, ‘e’}; //error,没有结束符,‘e’后面是什么未知
正确写法:Char str[6] = {‘a’, ‘b’, ‘c’, ‘d’, ‘e’};
(2)Char str[] = {‘a’, ‘b’, ‘c’, ‘d’, ‘e’}; //error,str的大小是5
正确写法:Char str[] = {‘a’, ‘b’, ‘c’, ‘d’, ‘e’,’\0’};
(3)Char str[5] = “abcde”; //error,有’\0’,因为加上’\0’占了6个字节,但str只有5个字节
正确写法:Char str[6] = “abcde”;
(4)Char str[] = “abcde”; //right,有’\0’,str占了6个字节