本文主要讲一些能提高效率的字符/字符串函数,以及一些易错点
size_t strlen(const char *str)
模拟实现
#include
#include
int my_strlen(const char* str)
{
int count = 0;
assert(str != NULL);
while (*str != '\0')//或者写成while(*str)
{
str++;
count++;
}
return count;
}
int main()
{
char str[] = "abcdef";
int ret=my_strlen(str);
printf("%d", ret);
return 0;
}
char *strcpy(char *dest, const char *src)
#include
#include
char* my_strcpy(char* dest, const char* src)
{
assert(dest != NULL);
assert(src != NULL);
char* ret = dest;
/*while (*src!='\0')
{
*dest = *src;
dest++;
src++;
}
*dest = *src;*/
while (*dest++ = *src++);//或者写成这样更精简的方法
return ret;
}
int main()
{
char arr1[] = "abcdefghijk";
char arr2[] = "qaz";
my_strcpy(arr1, arr2);
printf("%s", arr1);
return 0;
}
char *strcat(char *dest, const char *src)
#include
#include
char* my_strcat(char* dest,const char* src)
{
assert(dest != NULL);
assert(src != NULL);
char* ret = dest;
//找到'\0'
while (*dest != '\0')
dest++;
//追加
while (*dest++ = *src++);
return ret;
}
int main()
{
char str1[30] = "Hello! ";
char str2[] = "CSDN!";
my_strcat(str1, str2);
printf("%s", str1);
return 0;
}
int strcmp(const char *str1, const char *str2)
把 str1 所指向的字符串和 str2 所指向的字符串进行比较,不比较两个字符串的长度,而是比较字符串中每个字符的
#include
#include
int my_strcmp(const char* str1, const char* str2)
{
assert(str1 != NULL);
assert(str2 != NULL);
while (*str1 == *str2)
{
if (*str1 == '\0')
return 0;
str1++;
str2++;
}
if (*str1 > *str2)
return 1;
else
return -1;
}
int main()
{
char* str1 = "abcd";
char* str2 = "abcde";
int ret = my_strcmp(str1, str2);
printf("%d", ret);
}
点赞,你的认可是我创作的动力!
⭐收藏,你的青睐是我努力的方向!
✏️评论,你的意见是我进步的财富!