- size_t strlen (char *a) 输出字符串长度(首地址到\0前长度)
eg:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
char* a1 = "abcde";//5
char a2[10] = "abcde";//5
char a3[] = { 'a','b','c','d','e' };//不确定,因为数组里没有\0,不确定会读到多少位才有\0
printf("a1:%d\n", strlen(a1));
printf("a2:%d\n", strlen(a2));
printf("a3:%d\n", strlen(a3));
return 0;
}
运行结果:
1. 该函数返回值是无符号整数
eg:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
char* a1 = "abcde";
char a2[10] = "abcd";
if (strlen(a2) - strlen(a1) > 0)
{
printf(">\n");
}
else
{
printf("<\n");
}
return 0;
}
因为size_t是无符号整数,所以没有复数,最高位是1的数字默认是个值很大正数。
- strcpy 拷贝字符串函数
char *strcpy( char *a, const char *b); 将源字符串(b)拷贝到a里,返回目标地址首地址。
``````eg:
#include<stdio.h>
#include<string.h>
int main()
{
char a1[20] = "abcde";
char a2[10] = "abcd";
printf("%s",strcpy(a1,a2));
return 0;
}
结果:
- 调用函数时源字符串必须有\0,因为拷贝是拷贝到\0结束
#include<stdio.h>
#include<string.h>
int main()
{
char a1[20] = "abcde";
char a2[] = {'a','b','c','d','e','f'};
printf("%s",strcpy(a1,a2));
return 0;
}
该程序会报错,因为源字符串没有\0
2.源字符串的\0也会被拷贝过去
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int main()
{
char a1[20] = "aaaaaaaaaaaaaaaaaaa";
char *a2 = "abcd";
printf("%s",strcpy(a1,a2));
return 0;
}
3.目标空间必须要够大
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int main()
{
char a1[5] = "abc";
char *a2 = "abcdefghijk";
printf("%s",strcpy(a1,a2));
return 0;
}
目标空间长度是5,源字符串长度是11,程序会报错
4.目标空间必须可用
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int main()
{
char *a1 = "abc";
char *a2 = "abcdefghijk";
printf("%s",strcpy(a1,a2));
return 0;
}
因为a1指向的是常量,不是变量,所以不能修改,此时程序会报错。
- strcat 给俩字符串连接起来
char *strcat( char *a, const char *b );字符串b连接到a之后,返回a的首地址
eg:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int main()
{
char a1[100] = "abc";
char *a2 = "abcdefghijk";
printf("%s",strcat(a1,a2));
return 0;
}
- 源字符串必须以\0结束,要不然不知道从哪儿开始加b的字符
- 目标空间必须足够大
- 目标空间要可修改
- strcmp 比较两个字符串,注意不是比较两个字符串长度,是比较字符串对应位置上字符大小,相同就比较下一个,知道遇到不同或者遇到\0
int strcmp( const char *a, const char *b ); 如果a>b,返回值小于0,a<b,返回值大于0,a==b,返回值等于0。
eg:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int main()
{
char a1[100] = "abc";
char a2[100] = "abcdefghijk";
printf("%d\n",strcmp(a1,a2));
printf("%d\n", strcmp(a2, a1));
printf("%d\n", strcmp(a2, a2));
return 0;
}
运行结果: