1 将字符串转化为整数。
long stringToInt(char *s){
         long result=0;
         for(int i=0;s[i]!='\0';i++)
         {
                    if(int(s[i])<48||int(s[i])>57)
                      {//除去非数字  
                                    continue;
                       }
                     result=result*10+(s[i]-'0');
          }
         return result;
}
2将整数转化为字符串。(考虑正负号的问题)
void itoa (int n,char s[])
{
     int i,j,sign;
     if((sign=n)<0)//记录符号
     n=-n;//使n成为正数
    i=0;
    do{
         s[i++]=n+’0’;//取下一个数字
    }while ((n/=10)>0);//删除该数字
      if(sign<0)
           s[i++]=’-’;
       s[i]=’\0’;
     for(j=i;j>=0;j--)//生成的数字是逆序的,所以要逆序输出 
      printf("%c",s[j]);
}
3 实现字符串拷贝函数strcpy。(程序的完整性)
char * strcpy(char * strDest,const char * strSrc)
{
if ((strDest==NULL)||(strSrc==NULL)) 
throw "Invalid argument(s)"; 
char * strDestCopy=strDest; 
while ((*strDest++=*strSrc++)!='\0'); 
return strDestCopy;
}
4 编程实现memcpy函数。(以字节为单位的拷贝)
void* mymemcpy(void* dest, void* source, size_t count)
{
    char *ret = (char *)dest;
    char *dest_t = ret;
    char *source_t = (char *)source;
    while (count--)
    {
         *dest_t++ = *source_t++;
    }
    return ret;
}
5 编程实现memmove函数。
void* memmove(void* dest, void* source, size_t count)(考虑了指针地址重合的情况)
   {
       void* ret = dest;
      if (dest <= source || dest >= (source + count))
       {
          //Non-Overlapping Buffers
         //copy from lower addresses to higher addresses
         while (count --)
               *dest++ = *source++;
     }
     else
     {
        //Overlapping Buffers
       //copy from higher addresses to lower addresses
       dest += count - 1;
       source += count - 1;
       while (count--)
                *dest-- = *source--;l
     }
      return ret;
   }
同memcpy一样,在写的实际过程中我们始终以字节为单位进行相关的拷贝。
6写一个函数,目的是把char组成的字符串循环右移n位。比如,“abcde”,移动两位变为“deabc”.
编程实现:提示 strcpy函数,或者memcpy函数。
void LoopMove(char *pStr,int nSteps)
{
        int n = strlen(pStr) - nSteps;
        char temp[Max];
        strcpy(temp,pStr +n);
        *(pStr + n) = '\0';
        strcpy(temp + nSteps,pStr);
        strcpy(pStr,temp);
}
7 将一句话的单词进行倒置,标点不倒置。比如 I likebeijing.经过函数后变为:beijing. like I。
编程实现:
void strReverse(char *str,int n)
{
 int i = 0;
 int j = 0;
 int begin;
 int end;
char temp;
//...............第一步:整体倒置......................//
j = n-1;
 while (j>i)
 {
  temp = str[i];
  str[i] = str[j];
  str[j] = temp;
  i++;
  j--;
 }
 printf("after reversing wholly string = %s\n",str);
//...............第二步:按单词部分倒置......................//
 i = 0;
 while (str[i]!='\0')
 {
  if (str[i]!=' ')
  {
   begin = i;
   while ((str[i]!='\0') && (str[i]!=' '))
   {
    i++;
   }
   i = i-1;
   end = i;
  } 
  while (begin<end)
  {
   temp = str[begin];
   str[begin] = str[end];
   str[end] = temp;
   begin++;
   end--;
  }
  i++;
 }
}
8 求子串在父串中出现的次数。
int caculate(char *str,char *substr)
{
char* str1 = str;
char* substr1 = substr;
int times = 0;
while(*str1!='\0') //遍历整个父串
{
if(*str1 == *substr1)
{
str1++;
substr1++;
if(*substr1 == '\0')
{
substr1 = substr;
times++;
}
}
else
{
str1++;
}
}
return times;
}