C语言面试高频问题:自己代码实现字符串相关的常用API

Posted 行稳方能走远

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言面试高频问题:自己代码实现字符串相关的常用API相关的知识,希望对你有一定的参考价值。

参照:C语言面试高频问题:自己代码实现字符串相关的常用API
作者:图触靓
发布时间: 2020-08-08 13:31:33
网址:https://blog.csdn.net/bhbhhyg/article/details/107878102

1、实现get(char *);从键盘获取字符串


   
  1. void myget( char * str)
  2. {
  3. while( 1)
  4. {
  5. scanf( "%c", str);
  6. if(* str== '\\n')
  7. {
  8. * str= '\\0';
  9. return;
  10. }
  11. str++;
  12. }
  13. }

2、实现put(char *);输出字符串


   
  1. void myput(char *str)
  2. {
  3. while(*str!= '\\0')
  4. {
  5. printf( "%c",*str++);
  6. }
  7. printf( "\\n");
  8. return;
  9. }

3、实现strlen(char *);求字符串长度


   
  1. int mystrlen(char *str)
  2. {
  3. int len= 0;
  4. while( 1)
  5. {
  6. if(*str== '\\0')
  7. {
  8. return len;
  9. }
  10. str++;
  11. len++;
  12. }
  13. }

4、实现strcpy(char *,char *);拷贝str2的内容到str1;


   
  1. void mystrcpy(char * str1,char * str2)
  2. {
  3. while(*str2!= '\\0')
  4. {
  5. *str1=*str2;
  6. str1++;
  7. str2++;
  8. }
  9. }

5、实现strcat(char *,char *);合并字符串,把str2的内容合并到str1的后面


   
  1. void mystrcat(char *str1,char *str2)
  2. {
  3. while(*str1!= '\\0')
  4. {
  5. str1++;
  6. }
  7. while(*str2!= '\\0')
  8. {
  9. *str1=*str2;
  10. str2++;
  11. str1++;
  12. }
  13. return;
  14. }

6、实现strcmp(char *,char*)比较字符串大小,若两字符串内容完全相同,返回0,若str1比str2长返回1,str1比str2短则返回-1,长度相同内容不同也返回-1


   
  1. int mystrcmp(char *str1,char *str2)
  2. {
  3. int str1len= 0;
  4. int str2len= 0;
  5. while(*str1!= '\\0')
  6. {
  7. str1++;
  8. str1len++;
  9. }
  10. while(*str2!= '\\0')
  11. {
  12. str2++;
  13. str2len++;
  14. }
  15. if(str1len-str2len== 0){
  16. for( int i= 0;i<str1len;i++)
  17. {
  18. if(*str1==*str2){
  19. str1--;
  20. str2--;
  21. }
  22. else{
  23. return -1;
  24. }
  25. }
  26. return 0;
  27. }
  28. else if(str1len-str2len> 0){
  29. return 1;
  30. }
  31. else {
  32. return -1;
  33. }
  34. }

以上仅是个人思路,并非算法最优

以上是关于C语言面试高频问题:自己代码实现字符串相关的常用API的主要内容,如果未能解决你的问题,请参考以下文章

高频算法面试题_旋转字符串(完整的代码实现)

常用算法思路分析系列栈和队列高频题集(修改版)

嵌入式软件面试高频基础——C语言

常用算法思路分析系列字符串高频题集

精心整理14道高频消息队列场景面试题(建议收藏)

C/C++面试高频知识点八股文