发布时间:2024-08-05 15:01
目录
1、前言:
2、函数介绍
2.1 strlen
2.2 strcpy
2.3 strcat
2.4 strcmp
2.5 strncpy、strncmp、strncat
2.6 strstr
2.7 strtok
2.8 strerror
3、结语
在c语言中,我们经常会对“字符串”进行操作,当然我们可以用for循环的方式来一个字符一个字符的来处理,或者用以下介绍的字符/字符串函数,操作起来非常的方便。
size_t strlen(const char * str);
注意:
//模拟strlen,用两个指针记录起始和终止位置
void my_strlen(char* pa)
{
int count = 0;
char* str = pa;
while (*pa != '\0')
{
pa++;
count++;
}
printf("%d", (pa - str));
}
int main()
{
char arr[] = {"ajkljilbcde"};
my_strlen(arr);
return 0;
}
char* strcpy(char* destination, const char* source );
注意:
即可实现)
char* my_strcpy(char* des, char* src)
{
assert(des && src);
char* ret = des;
while (*src != '\0' )
{
*des = *src;
des++;
src++;
}
*des = *src;
return ret;
}
int main()
{
char arr1[20] = {0};
char arr2[] = { "abcdfd" };
my_strcpy(arr1, arr2);
printf("%s",arr1);
return 0;
}
char* strcat (char* destination, const char* source );
注意:
char *my_strcat(char *dest, const char*src)
{
char *ret = dest;
assert(dest != NULL);
assert(src != NULL);
while(*dest)
{
dest++;
}
while((*dest++ = *src++))
{
;
}
return ret;
}
int strcmp (const char* str1, const char* str2 );
标准规定:
以上函数,在上述介绍的函数上加上了n,也就是可以指定操作的字符个数,其余方法使用没有太大差别,在这里不过多赘述。
char* strstr(const char *str1, const char *str2);
char* my_strstr(const char* str1, const char* str2)
{
assert(str1 && str2);
const char* s1 = str1;
const char* s2 = str2;
const char* cur = str1;
while (*cur)
{
s1 = cur;
s2 = str2;
while (*s1 && *s2 && (*s1 == *s2))
{
s1++;
s2++;
}
if (*s2 == '\0')
{
return (char*)cur;
}
cur++;
}
return NULL;//找不到
}
int main()
{
char arr1[] = "abcdeqcdef";
char arr2[] = "cdef";
char* ret = my_strstr(arr1, arr2);
if (NULL == ret)
{
printf("找不到子串\n");
}
else
{
printf("%s\n", ret);
}
return 0;
}
注意:
char* strtok (char* str, const char* sep );
int main ()
{
char str[] ="- This, a sample string.";
char * pch;
printf ("Splitting string \"%s\" into tokens:\n",str);
pch = strtok (str," ,.-");
while (pch != NULL)
{
printf ("%s\n",pch);
pch = strtok (NULL, " ,.-");
}
return 0;
}
char* strerror(int errnum);
C语言封装的处理字符串的函数功能很强大,希望大家看了我的博客能有所帮助。
博主肝代码不容易,如果对你有帮助的话,麻烦点个赞呦!!!