zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    delphi中屏蔽浏览器控件右键菜单
    书目:一些
    数据库ADONETDataAdapter对象参考
    数据库ADONET排序、搜索和筛选
    易语言数据类型及其长度
    易语言数据类型的初始值
    数据库ADONET使用DataAdapter对象
    ADONET使用DataSet处理脱机数据
    数据库ADONETOleDbParameter对象参考
    在项目中添加新数据集
  • 原文地址:https://www.cnblogs.com/yasanlun/p/3837529.html
Copyright © 2011-2022 走看看