String函数中的一些方法的用法:
1、strlen(str);求地址中字符串的长度,不包括\0.
2、strcat(str1,str2);把str2的内容追加到str1的后面。返回str1的首地址。
3、strcpy(str) ;复制字符串的库函数
4、strcmp(str1, str2)对两个字符串自左至右逐个字符相比(按ASCII码值大小比较),直到出现不同的字符或遇到‘\0’为止
看下这个strcpy、strcat、strlen、strcmp函数的原型
char* strcpy(char* des, const char* source)
{
char* r = des;
//检查形参是否合法,是否有指向空间
assert((des != NULL) && (source != NULL));
while ((*des++ = *source++) != '\0');
return r;
}
/*不可用while(*str1++==*str2++)来比较,当不相等时仍会执行一次++,
return返回的比较值实际上是下一个字符。应将++放到循环体中进行。*/
/* 返回的结果
(1)字符串1=字符串2,返回0
(2)字符串1>字符串2,返回一个正整数
(3)字符串1<字符串2,返回一个负整数。
*/
int strcmp(const char *str1, const char *str2)
{
while (*str1 == *str2)
{
if (*str1 == '\0')
return 0;
str1++;
str2++;
}
return *str1 - *str2;
}
char *mystrcat(char *dst, const char *src) //用自己的方式实现strcat函数功能
{
char *p = dst; //下面的操作会改变目的指针指向,先定义一个指针记录dst
while (*dst != '\0')dst++;
while (*src != '\0')*dst++ = *src++;
*dst = '\0';
return p; //dst现在指向拼接后的最后一位字符,在这里返回dst,会出现错误
}
//这里返回的是一个整形
int strlen(const char *str) {
assert(str != NULL);
int len = 0;
while (*str++ != '\0') {
++len;
}
return len;
}