C语言大厂面试技巧及strcpy()函数示例详解

目录

  • 1、什么是优秀的代码?
  • 2、常见的coding技巧有哪些?
  • 3、以模拟实现strcpy为例
    • (1)了解strcpy()函数
    • (2)正片开始(危)
      • 1.第一阶段(面试官:最多5分)
      • 2.第二阶段(面试官:最多7分)
      • 3.第三阶段的代码:(面试官:最多8分)
      • 4.第四阶段(面试官:完美代码!10分!)

1、什么是优秀的代码? 1. 代码运行正常
2. bug很少
3. 效率高
4. 可读性高
5. 可维护性高
6. 注释清晰
7. 文档齐全

2、常见的coding技巧有哪些? 1. 使用assert
2. 尽量使用const
3. 养成良好的编码风格
【C语言大厂面试技巧及strcpy()函数示例详解】4. 添加必要的注释
5. 避免编码的陷阱。

3、以模拟实现strcpy为例
(1)了解strcpy()函数
C语言大厂面试技巧及strcpy()函数示例详解
文章图片

作用:将源字符串里的字符拷贝到目标字符串中去。
注意:字符串的结束标志'\0'也会拷贝过去。
证明如下:
C语言大厂面试技巧及strcpy()函数示例详解
文章图片


(2)正片开始(危)

1.第一阶段(面试官:最多5分)
#includevoid my_strcpy(char* dest, char* src){ while (*src!='\0') {*dest = *src; dest++; src++; } *dest = *src; //处理字符串的结束标志'\0' //*dest = '\0'; 这样处理并非是不行,但是会给阅读代码的造成一种错觉\ 即这个'\0'是自己放进去的,而不是从源字符串拷贝进去的}int main(){ char arr1[20] = { 0 }; char arr2[] = "hello"; my_strcpy(arr1, arr2); printf("%s\n", arr1); return 0; }

缺点:如果传的实参是空指针,就会出现问题,因为空指针是无法进行解引用的。
解决方法:使用assert()进行断言,()里面放的是表达式。使用assert需要引用头文件。
说明:assert(),括号中的表达式如果不满足,编译器就会报错。

2.第二阶段(面试官:最多7分)
#include#includevoid my_strcpy(char* dest, char* src){ assert(dest != NULL); assert(src != NULL); //当然,此处也可以将两个合并成一个:assert( dest && src ) while (*src!='\0') {*dest = *src; dest++; src++; } *dest = *src; }int main(){ char arr1[20] = { 0 }; char arr2[] = "hello"; my_strcpy(arr1, arr2); printf("%s\n", arr1); return 0; }

下面是图片演示,加入传入一个空指针就会出现下面的报错。
C语言大厂面试技巧及strcpy()函数示例详解
文章图片


3.第三阶段的代码:(面试官:最多8分)
#include#includevoid my_strcpy(char* dest, char* src){ assert( dest && src ); while(*dest++ = *src++)//'\0'的ascii码值为0,为假,会退出循环 {; }}int main(){ char arr1[20] = { 0 }; char arr2[] = "hello"; my_strcpy(arr1, arr2); printf("%s\n", arr1); return 0; }


4.第四阶段(面试官:完美代码!10分!) 通过对比发现,与库函数中的函数还相差一个const,以及返回类型不同。
C语言大厂面试技巧及strcpy()函数示例详解
文章图片

#include#includechar * my_strcpy(char* dest, const char* src)//const可以防止源字符串被改变{ assert( dest && src ); char* ret = dest; while(*dest++ = *src++) {; } return ret; }int main(){ char arr1[20] = { 0 }; char arr2[] = "hello"; printf("%s\n", my_strcpy(arr1, arr2)); return 0; }

以上就是C语言面试技巧及strcpy()函数示例详解的详细内容,更多关于C语言面试技巧及strcpy()函数的资料请关注脚本之家其它相关文章!

    推荐阅读