C语言字符串处理函数的实现
2017-04-29 07:54
597 查看
C语言并没有字符串类型,而是通过把字符数组的字符后面一位赋值为’\0’字符来实现的, 这个’\0’字符的码值为0, 而不是’0’字符的48!
C语言的这种通过数组的方式进行存储字符串的形式在使用的过程有很大的难度, 一不小心就可能越界或者注意不到这个字符串和数组的长度, 所幸的是string.h头提供了一些处理字符串的库函数, 当然这些函数为了效率都是使用汇编实现的, 下面我就贴上我自己实现的C语言的库函数, 我的实现方法极大的保证了效率和代码的间接性, 如果有官方的实现估计也和我这差不多吧!
字符串复制函数strcpy:
strncpy函数, 复制字符串的时候相对更安全的选择:
计算字符串的实际长度strlen:
拼接字符串strcat:
拼接字符串更安全的选择strncat:
字符串比较函数strcmp:
我在实现这些函数的时候使用了一些C语言特有的高效和简洁的写法, 虽然读者未必需要去实现, 但是这些书写的惯用法还是必须掌握的!当然很多地方我都是使用的while而不是for循环,for循环是个强大的工具,但也切勿滥用!
注:官方的函数原型在C99中会使用restrict受限指针,此处不做详细介绍!
C语言的这种通过数组的方式进行存储字符串的形式在使用的过程有很大的难度, 一不小心就可能越界或者注意不到这个字符串和数组的长度, 所幸的是string.h头提供了一些处理字符串的库函数, 当然这些函数为了效率都是使用汇编实现的, 下面我就贴上我自己实现的C语言的库函数, 我的实现方法极大的保证了效率和代码的间接性, 如果有官方的实现估计也和我这差不多吧!
字符串复制函数strcpy:
char* strcpy(char* s1, const char* s2) { while ((*s1++ = *s2++)) ; return s1; }
strncpy函数, 复制字符串的时候相对更安全的选择:
char* strncpy(char* s1, const char* s2, int len) { int i = 0; while (i < len && (*s1++ = *s2++)) i++; return s1; }
计算字符串的实际长度strlen:
size_t strlen(const char* s) { const char* ptr = s; while (*ptr++) ; return ptr - s; }
拼接字符串strcat:
char* strcat(char* s1, const char* s2) { char* ptr = s1; while (*ptr++) ; while ((*ptr++ = *s2++)) ; return s1; }
拼接字符串更安全的选择strncat:
char* strncat(char* s1, const char* s2, int len) { char* ptr = s1; int i = 0; while (*ptr++) ; while (i < len && (*ptr++ = *s2++)) ; return s1; }
字符串比较函数strcmp:
操作指针的写法: int strcmp(const char* s1, const char* s2) { for (;*s1 == *s2; s1++, s2++) if (*s1 == '\0') return 0; return *s1 - *s2; } 操作下标的写法: int strcmp(const char* s1, const char* s2) { int i = 0; for (;s1[i] == s2[i]; i++) if (s1[i] == '\0') return 0; return s1[i] - s2[i]; }
我在实现这些函数的时候使用了一些C语言特有的高效和简洁的写法, 虽然读者未必需要去实现, 但是这些书写的惯用法还是必须掌握的!当然很多地方我都是使用的while而不是for循环,for循环是个强大的工具,但也切勿滥用!
注:官方的函数原型在C99中会使用restrict受限指针,此处不做详细介绍!
相关文章推荐
- C语言字符串处理函数原型实现
- 常用的字符串处理库函数的C语言实现
- C语言实现常见的字符串处理函数
- 字符串处理函数strlen、strcpy、strcat、strcmp和convert的C语言实现
- C语言:使用链表实现的可变长度字符串处理函数
- C语言中字符串处理函数实现(部分)
- c语言字符串处理函数
- C语言字符串转成整数的函数实现
- C语言字符串处理函数总结
- 自己实现的一些字符串处理的函数
- 巧用boost库实现字符串映射消息处理函数
- C语言中常用的几个字符串处理函数:
- 巧用boost库实现字符串映射消息处理函数
- 编C语言程序:用自定义函数实现字符串处理函数strcat、 strcpy、strcmp、strlen和strlwr的功能
- C语言字符串处理的几个常用函数
- C语言字符串处理函数
- c语言字符串处理函数
- Strsafe.h:更安全的C语言字符串处理函数
- 自己实现基本的C标准库字符串处理函数——基本问题
- C语言常用字符串处理函数