对于库函数,想必大家已经有所了解!但是对于某些误撞进入此篇博客的读者,笔者在此进行简单的介绍!
“strcpy是字符串复制函数,strcpy(a,b)就是将字符串b的内容全部复制到字符串a中,使用这个函数时要注意字符串拥有的空间至少要和b字符串相等,否则会出错。”
笔者所写的简单代码为:
//库函数strcpy的实现情况! #include <stdio.h> #include <string.h> int main() { char arr1[20] = "***************"; char arr2[] = "hello"; strcpy(arr1, arr2); printf("%s\n", arr1); return 0; }
在这段代码中,形象的诠释了strcpy()库函数的简单应用!
下面是代码的运行结果!
经过上面的简单讲解,想必大家对于库函数strlen()有着深刻的了解,并且能自我找到规律了!下面请看笔者对于如何用代码来模拟库函数strlen()的实现!
用代码来模拟库函数strlen()的实现!
下面请看笔者的简单代码,然后笔者将会通过代码加解析的方式来带领大家走进神秘的库函数!
//模拟库函数strlen()的实现! #include <stdio.h> void my_str(char* arr1, char* arr2) { while (*arr2 != '\0') { *arr1 = *arr2; arr1++; arr2++; } *arr1 = *arr2; //拷贝‘\0’ } int main() { char arr1[20] = "****************"; char arr2[] = "hello"; my_str(arr1, arr2); printf("%s\n", arr1); return 0; }
在上述的代码段中,最为重要的部分还是在于:while()的拷贝循环里面!
对于在main函数中,通过:my_str(arr1, arr2); 将数组 char arr1[20] = "****************"; char arr2[] = "hello"; 传递给形参,而数组名是数组首元素地址!对于地址,形参要用指针来接收,,返回类型为:void(空类型)!因此经函数部分定义为:void my_str(char* arr1, char* arr2)!
对于在函数体部分:while ()循环,对于()里面的内容一直循环判断,直到: *arr2 == '\0' 时候,条件不成立,结束while ()循环!
在while ()循环里面:
*arr1 = *arr2; arr1++; arr2++;
将地址进行解引用操作后,进行赋值运算!从而将*arr2全部赋值给*arr1; 然后在arr1++; arr2++;
一直到 : *arr2 == '\0' 为止!然后在执行一次:*arr1 = *arr2; 这个的目的主要在于还是要拷贝'\0' ! 然后才能算术完全实现库函数strlen()的功能!
代码的最后运行结果为:
对于函数体部分的代码,不同的人有着不同的见解,其实也可以写成:
void my_str(char* arr1, char* arr2) { while (*arr1++ = *arr2++) { ; } }
这样书写代码的最后结果也是一样的!
最后的运转结果为:
对于上述模拟库函数strlen()的实现已经到此为止!
最后笔者一丢丢小私心!(在文章开头部分)望满足!