C语言实现strlen()4种方法和strcat()3种方法
2014-11-07 23:39
513 查看
//当然strlen和strcat函数可以用汇编来编译,因为有时CPU提供了字符串处理的指令,这样就会高效些。 #include <stdio.h> #include <assert.h> #if 0 // 默认使用法4 // 法1 int strlen(const char* str) { int n; // const char *p = str; //测试这句,这个语句不需要,因为我实参是指针,形参指针改变指向不影响实参指向 for(n = 0; *str != '\0'; n++) { str++; } return n; } #elif 0 // 法2 int strlen(const char* str) { int n = 0; for(; *str++; n++); return n; } #elif 0 // 法3 int strlen(const char* str) { int n = 0; while(*str++) { n++; } return n; } #else // 法4 int strlen(const char* str) { const char *p =str; while(*str)//写成while(*str++)不行(因为在return时候str又加加了,会多加1),必须写成当前代码 , str++; return str-p; } #endif #if 0 char* strcat(char* str1, const char* str2) { assert((str1!=NULL)&&(str2!=NULL)); // if((str1==NULL)||(str2==NULL)) throw "Invalide arguments!"; char *p = str1; while(*p != '\0') p++; while(*str2 != '\0') { *p = *str2;//这里发生错误 p++; str2++; } *p = '\0'; return str1; } #elif 0 char* strcat(char* str1,const char* str2) { assert((str1!=NULL)&&(str2!=NULL)); //if((str1==NULL)||(str2==NULL)) throw "Invalide arguments!"; char *p = str1; while(*p)// 写成while(*p++)错误,原因如上 p++; while(*p++ = *str2++); return str1; } #else char *strcat(char *dst, char *src) { size_t dst_len = strlen(dst); int i; for (i = 0; src[i] != '\0'; i++) dst[dst_len + i] = src[i]; dst[dst_len + i] = '\0'; return (dst); } #endif int main(int argc, char **argv) { /* s最好足够大,否则溢出,这里可以通过编译和运行,但别这么做 */ char s1[] = "ab"; //使用char * = "ab",*s3 = "cde";发生段错误 char s2[] = "cde"; int len; strcat(s1,s2); len = strlen(s1); printf("s1 = %s\n",s1); printf("len = %d\n",len); return 0; }
输出:
相关文章推荐
- C语言strlen函数的3种实现方法
- C语言中strlen() strcpy() strcat() strcmp()函数的实现方法
- 【C语言】strlen的三种实现方法,strcmp,strcat,strcpy
- 【C语言】strlen的三种实现方法,strcmp,strcat,strcpy
- C语言字符串函数的模拟实现(strlen、strcpy、strcat、strstr 、strcmp)
- strcat,strcpy,strcmp,strlen4个常用字符串处理函数的数组与指针简单实现方法~
- 用C语言实现给定两个整形变量的值,将两个值的内容进行交换。(4种方法)
- C语言中的strlen实现方法
- c语言:3种方法实现输出一个整数的每一位。
- C语言字符串常见操作-strcpy、strlen、strcat和strcmp实现
- [C语言]strcat strstr strcpy strcmp strlen 的实现与使用
- CRC算法原理及C语言实现(介绍了3种方法)
- 逆元的求法总结(3种基本方法+4种实现)
- 【转】字符串操作函数 C语言实现 (strcpy, strncpy, memcpy, memset, strcat, strlen ... )
- C语言中strlen、strcpy、strncpy、strcat、strnact、strcmp、memcpy函数的实现
- c语言swap(a,b)值交换的4种实现方法
- C语言中strlen(),strcmp(),strcat()的源码实现
- C语言_编写说明strlen、strcpy、strcat、strcmp如何实现的
- strlen函数的3种实现方法
- c语言:3种方法实现输出一个整数的每一位。