李sir_Blog

博客园 首页 联系 订阅 管理

(1)统计字符串中出现的子字符串数量

#include "stdafx.h"
void findcount(char* s1,char *s2);
void findcount(char* s1,char *s2)
{
   char * str1 = s1;
   char * str2 = s2;
   int count=0;
   while (*str1!='\0')
   {
      if (*str1==*str2&&*str1!='\0'&&*str2!='\0')
      {
    str1++;
    str2++;
      }
   else
   {
         str2= s2;
   str1++;
   }
   if (*str2=='\0')
   {
     count++;
     str2= s2;
    
   }
 
   }

}
int _tmain(int argc, _TCHAR* argv[])
{
 char *str1 = "abdbcfbcrbcdgrbcddbcdfsabcdcc";
 char *str2 ="bcd";
    findcount(str1,str2);
 return 0;
}

(2)实现strcpy函数
char * strcpy(char *strDest,const char *strSrc)

 assert((strDest!=NULL) && (strSrc !=NULL));
 char * strDestCopy=strDest;  
 //while ((*strDest++=*strSrc++)!='\0');//可以替换成下面的循环
 while(*strSrc!='\0')
 {
  *strDest=*strSrc;
  strDest++;
  strSrc++;
 }
 *strDest=*strSrc;
 return strDestCopy;

}
int _tmain(int argc, _TCHAR* argv[])
{
 
 char a[20]="you are a student",c[]="i am teacher!";
 strcpy(a,c);
 return 0;
}

(3):Strcat原型

char *strcat(char *strDest, const char *strScr) //将源字符串加const,表明其为输入参数
{
 char * address = strDest; //该语句若放在assert之后,编译出错
 assert((strDest != NULL) && (strScr != NULL)); //对源地址和目的地址加非0断言
 while(*strDest!='\0') //是while(*strDest!=’\0’)的简化形式
 { //若使用while(*strDest++),则会出错,因为++是不受循环
  strDest++; //约束的。所以要在循环体内++;因为要是*strDest最后指
 } //向该字符串的结束标志’\0’。
 while((*strDest++ = *strScr++)!='\0') //是while((*strDest++ = *strScr++)!=’\0’)的简化形式
 {
  NULL; //该循环条件内可以用++,
 } //此处可以加语句*strDest=’\0’;
 return address; //为了实现链式操作,将目的地址返回
}
int _tmain(int argc, _TCHAR* argv[])
{
 char a[40]="you are a student",c[]="i am teacher!";
 strcat(a,c);
 return 0;
}

(4)memcpy

//注意类型都是void*

void *memcpy(void *dest, const void *src, size_t count)
{
 char *tmp = dest;
 const char *s = src;
 while (count--)
  *tmp++ = *s++;
 return dest;
}

posted on 2011-01-15 15:57  李sir  阅读(446)  评论(0编辑  收藏  举报