一提到字符串,想必大家对此表示十分亲切且熟悉了吧,字符串在我们的日常生活中处处可见,因此在程序里面其也占着举足轻重的地位,下面就让我们来了解了解它吧~
一、字符串的定义
1、含义
使用“ ”以‘\0‘结尾的一串字符。字符串的结尾标识为‘\0‘,只有用“ ”包括起来的都是字符串。
2、使用案例
字符串的错误定义
char arr[5] = {'a','b','c','d','e'};//没有'\0'
char crr[] = {'a','b','c','d','e'};
char drr[] = "ab\0cde"//打印出来ab,字符串中不能有'\0'
字符串的正确定义
char arr[5] = {'a','b','c','d'};//有'\0'
char frr[5] = "abcd";
char err[] = "abcde";
char *hrr = "abcde";
注意:后面两个的区别
二、字符串的有效长度
注意:strlen不包括’\0’,sizeof包括’\0’
求其sizeof 和 strlen
char str[100] = "abcde"; //100,5
char str2[] = "abcde";//6,5
char *str3 = "abcde";//4(指针的字节数都为4),5
char str4[100] = "abcdef\0gh";//100,6(字符串遇到'\0'则结束)
char *str6 = "abcdef\0gh";//4,6
char str5[] = "abcdef\0gh";//10(数组不管\0,因为0也可以存在数组里),6
char str4[] = "abcdef\n\0ghi"//12,7
总结:strlen是看字符串,不把\0计算进去。sizeof是计算所有字符
三、字符串的相关操作
1、字符串的拷贝
void Mystrcpy(char* des,char* src)
{
while(*src != '\0')
{
*des = *src;
des++;
src++;
}
*des = '\0';
}
可以用一句话实现字符串的拷贝:*des++ = *src++
2、字符串的连接
void Mystrcat(char* des,char* src)
{
while(*des != '\0')
{
des++;
}
while(*src != '\0')
{
*des = *src;
des++;
src++;
}
*des = '\0';
}
3、求字符串的长度
int Mystrlen(char *str)
{
int temp = 0;
while(*str != '\0')
{
temp++;
str++;
}
return temp;
}
4、字符串的比较
int myStrCmp(char *str1, char *str2) {
int m;
int n;
m = strlen(str1);
n = strlen(str2);
if (m == n)
{
printf("same long\n");
}
else if (m < n)
{
printf("str2 long\n");
}
else
{
printf("str1 long\n");
}
}
6、输入一行字符,统计里面有几个单词
int words(const char* str)
{
assert(str != NULL)
if(str == NULL)
{
return 0;
}
int count = 0;
while(*str != '\0')
{
if(isalpha(*str) && !isalpha(*(str+1)))
{
count ++;
str++;
}
}
return count;
}
来源:CSDN
作者:汪鑫雨
链接:https://blog.csdn.net/qq_43412060/article/details/104184986