• c/c++面试题(3)strcat/strcmp/strlen/strcpy的实现


    1.编写一个函数实现strlen以及strcpy函数.

       strcpy函数.

       后面的字符串拷贝到一个字符数组中,要求拷贝好的字符串在字符数组的首

       地址,并且只拷贝到''的位置.原型是

       char* my_strcpy(char* dest[],const char* src);

      1#include <stdio.h>
      2 #include <assert.h>
      3 char* my_strcpy(char *dest,const char* src)
      4 {
      5     assert(dest != NULL && src != NULL);
      6     char* p = dest;
      7     while(*src != '')
      8     {
      9         *p++ = *src++;
     10     }12     return dest;
     13 }
     14 int my_strlen(const char* str)
     15 {
     16     int res = 0;
     17     if(NULL == str)
     18         return -1;
     19     else
     20         while(*str++ != '')  //注意这里的''和0是相同的.
     21             res++;
     22     return res;
     23 }

    这两个函数的实现主要是判断空指针,其他的注意细节就是strcpy不要改变第一个参数的指向,还有就是返回字符串的

    首地址以实现级联式应用.

    下面写一个简化版本的更好.

    char* other_strcpy(char* dest,const char* src)
    {
        assert(dest != NULL && src != NULL);
        char *p = dest;
        while((*p++ = *src++) != '')
            NULL;
        return dest;
    }

    2.实现strcat和strcmp函数.

    原型是:char* my_strcat(char* dest,const char* src);

                int   my_strcmp(const char* s1,const char* s2);

      

     1 #include <stdio.h>
      2 #include <assert.h>
      3 int my_strcmp(const char* s1,const char* s2)
      4 {
      5     assert(s1 != NULL && s2 != NULL);
      6     for(;*s1 == *s2;s1++,s2++);
      7     if(*s1 == '' && *s2 == '')
      8         return 0;
      9     return ((unsigned char)*s1 < (unsigned char)*s2 ? -1: 1);
     10 }   
    
    
     3 char* my_strcat(char* s1,const char* s2)
      4 {
      5     assert(s1 != NULL && s2 != NULL);
      6     char* dest = s1;
      7     while(*dest != '')
      8         dest++;
      9     while(*dest++ = *s2++);
     10     return s1;
     11 }
  • 相关阅读:
    input设置只能输入数字,附上手机号码验证
    vue组件传值的几种方式
    微信小程序之子组件的使用
    vue ckeditor5 高度的设置
    vue v-if与v-show的深入思考
    vue与react之间的区别
    vue打印电子面单(后台传来的html的解决方案)
    Asp.NET 与 WebApi 共享Session
    Python大数据:jieba 中文分词,词频统计
    Python大数据:信用卡逾期分析
  • 原文地址:https://www.cnblogs.com/yasanlun/p/3837529.html
Copyright © 2020-2023  润新知