笔试题总结之字符串篇(C/C++)

原创 2012年03月25日 22:08:36

//字符串的拷贝

char* Strcpy(char* strDest, const char* strSrc) {

    if(strDest== NULL || strSrc == NULL) {

        returnNULL;

    }

    if(strDest== strSrc) {

        returnstrDest;

    }

    char*strTemp = strDest;

   while((*strDest++ = *strSrc++) != '\0');

    returnstrTemp;

}

//内存拷贝

void* Memcpy(void* dest, void* src, size_t count)

{

   if(dest ==NULL || src == NULL) {

       returnNULL;

   }

   if(dest ==src) {

       returndest;

   }

   char* cdest =(char*)dest;

   char* csrc =(char*)src;

//关键,防止拷贝覆盖

   if((csrc <cdest) && (csrc+count > cdest)) {

      while(count--)

          cdest[count] = csrc[count];

   } else {

      while(count--)

          *cdest++ = *csrc++;

   }

   return dest;

}

 

//字符串反转

char* reverse_self(char* str, int n) {

    if(str ==NULL)

        returnNULL;

    int low = 0;

    int high =n-1;

    char ch;

    while(low< high) {

        ch =str[low];

        str[low]= str[high];

       str[high] = ch;

        ++low;

        --high;

    }

    return str;

}

 

//按单词逆序

char* reverse_by_word(char* str, int n) {

    if(str ==NULL)

        returnNULL;

    str =reverse_self(str, n);

    char* p =str;

    int cnt = 0;

    while(*p) {

        if(*p !=' ')

           ++cnt;

        ++p;

       if((*p == ' ' || *p ==NULL) && cnt > 1) {

           reverse_self(p-cnt, cnt);

            cnt= 0;

        }

    }

    return str;

}

 

 

 

//整数转化成字符串

char* num_to_str(int num, char* str, int size) {

    int cnt = 1;

    int temp =num/10;

    while(temp){

        temp /=10;

        ++cnt;

    }

    if(num <0) {

        temp =-num;

        ++cnt;

    }

    if(size <cnt+1) {

        returnNULL;

    }

    if(num <0) {

        num =-num;

        str[0] ='-';

    }

    str[cnt] ='\0';

    while(num) {

       str[--cnt] = '0' + num%10;

        num /=10;

    }

    return str;

}

 

 

//String构造函数

String::String(const char *str)

{

if(str == NULL)//strlen在参数为NULL时会抛异常才会有这步判断

{

m_data = new char[1];

m_data[0] = '\0' ;

} else {

m_data = newchar[strlen(str) + 1];

strcpy(m_data,str);

}

}

//拷贝构造函数

String::String(const String &another)

{

m_data = newchar[strlen(another.m_data) + 1];

strcpy(m_data,other.m_data);

}

//赋值操作符

String& String::operator =(const String &rhs)

{

if ( this ==&rhs)//判断自我赋值

return *this ;

delete []m_data; //删除原来的数据,新开一块内存

m_data = newchar[strlen(rhs.m_data) + 1];

strcpy(m_data,rhs.m_data);

return *this ;

}

 

 

/* 在母串中查找子串出现次数的代码。*str:母字符串;*s:子字符串*/

int count(char*str,char* s)

{

char* s1;

char* s2;

int count = 0;

while( *str !='\0' )

{

s1 = str;

s2 = s;

while( ( *s2 ==*s1 ) && ( *s2 != '\0' ) && ( *s1 != '\0' ) )

{

s2++;

s1++;

}

if( *s2 == '\0')

count++;

str++;

}

return count;

}

 

C/C++ 字符串 总结

1 字符基础 1.1  单字节字符集(single-byte character set(SBCS)) 顾名思义,在这种模式下,所有的字符都只用一个字节表示,常见的如,ASCII 1.2  多字节字符...
  • haifengzhilian
  • haifengzhilian
  • 2014年04月18日 18:29
  • 3763

C/C++经典笔试题

 1.写出判断ABCD四个表达式的是否正确, 若正确, 写出经过表达式中 a的值(3分)int a = 4;(A)a += (a++); (B) a += (++a) ;(C) (a++) += a;...
  • demon_evil
  • demon_evil
  • 2008年02月19日 21:29
  • 13938

2015年终总结——奋斗篇

转眼间,辞旧迎新,2015结束了;互赞一句,你还好,我还好,可时间都去哪了。     幸福的是,你也好,我也好,我们都走在奋斗的路上。在时间逝去的同时,我们都想在它的手里夺点什么。     平平谈谈很...
  • zt15732621796
  • zt15732621796
  • 2016年02月27日 21:08
  • 601

C/C++字符串笔试知识点及实例

一、C字符串与C++字符串的深入理解对于C语言,需要区分C字符串和C字符数组。 C字符串:以字符NULL(‘\0’)结尾的字符数组; C字符数组:数组元素类型为字符类型。C字符串的的初始化:cha...
  • wangjun_huster
  • wangjun_huster
  • 2017年03月26日 16:48
  • 529

C++字符串操作笔试题第二波

//1.字符串替换空格:请实现一个函数,把字符串中的每个空格替换成“%20”。 //例如输入“we are happy.”,则输出“we%20are%20happy.”。 #include #inc...
  • liuhuiyan_2014
  • liuhuiyan_2014
  • 2015年07月03日 16:27
  • 1442

c++工程师笔试常见题目总结

最近参加了好多场c/c++笔试,感觉题型就那些,今天把这些题型总结总结供大家参考1.动态库和静态库的区别 静态连接库就是把(lib)文件中用到的函数代码直接链接进目标程序,程序运行的时候不再需要其它的...
  • j_shui
  • j_shui
  • 2016年03月06日 22:04
  • 379

C/C++字符串总结

C/C++字符串总结
  • ANvDbg
  • ANvDbg
  • 2016年02月02日 16:08
  • 784

2016届 阿里巴巴校招研发工程师C/C++笔试题--2015.08.23

一、 给出一组整数对 {(a[0], b[0]), (a[1], b[1]) ... (a[n-1], b[n-1]) },所有 a 值 和 b 值分别不重复(任意 i!= j 满足 a[i] != ...
  • u012243115
  • u012243115
  • 2015年08月23日 14:40
  • 6845

C/C++常见笔试面试题之常考关键字

对笔试面试中C/C++常考关键字进行了整理,包括volatile、const、static、extern、new/delete和malloc/free等。希望这些知识点有帮助!...
  • owen7500
  • owen7500
  • 2016年09月28日 19:13
  • 1007

《C/C++学习指南(语法篇)》 - 关于本书

创作目的:想以自己的能力和经验为国内(及国外)的读者奉献一本好书,一本让人一看就懂、“不可能读不懂”的经典教程。它的理念是让编程变得简单,让人一看就懂。它的目标是成为大中专院校、培训班、从业人员和爱好...
  • iamshaofa
  • iamshaofa
  • 2015年03月12日 14:39
  • 4987
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:笔试题总结之字符串篇(C/C++)
举报原因:
原因补充:

(最多只允许输入30个字)