几个常用的函数原型

strcpy函数原型

char *strcpy(char *strDest, const char *strSrc)  
{  
    if (strDest == NULL || strSrc == NULL)  
        return NULL;  
      if (strDest == strSrc)  
         return strDest;  
      char *tempDest = strDest;  
      while((*strDest++ = *strSrc++) != '\0');  
      return tempDest;  
}  
这里有几个要点:
1、传进来的参数,为了保护原字符串不被修改,原字符串用 const 修饰
2、对源字符串和目的字符串加上非0断言,而且注意是NULL,并不是0或者bool,这里是C语言,0并不等      于NULL。
 3、为了实现链式操作,将目的地址返回,且返回值类型为char *。

附:见到过的几个常用函数


/**************************************/
/**********     isalnum()     *********/
/**************************************/
int m_isalnum(char ch)
{
 return ((ch<='9'&&ch>='0')
   ||(ch<='z'&&ch>='a')
   ||(ch<='Z'&&ch>='A')); 
}


/**************************************/
/**********     isalpha()     *********/
/**************************************/
int m_isalpha(char ch)
{
 return ((ch<='z'&&ch>='a')
   ||(ch<='Z'&&ch>='A')); 
}


/**************************************/
/**********     islower()     *********/
/**************************************/
int m_islower(char ch)
{
 return (ch<='z'&&ch>='a');
}


/**************************************/
/**********     isupper()     *********/
/**************************************/
int m_isupper(char ch)
{
 return (ch<='Z'&&ch>='A');
}


/**************************************/
/**********     isxdigit()    *********/
/**************************************/
int m_isxdigit(char ch)
{
 return (ch<='9'&&ch>='0');
}


/**************************************/
/**********     tolower()     *********/
/**************************************/
char m_tolower(char ch)
{
 if(ch<='Z'&&ch>='A')
  return (ch+'a'-'A');
 return '0';
}


/**************************************/
/**********     toupper()     *********/
/**************************************/
char m_toupper(char ch)
{
 if(ch<='z'&&ch>='a')
  return (ch+'A'-'a');
 return '0';
}


/**************************************/
/**********       atoi()      *********/
/**************************************/
int m_atoi(char *str)
{
 char *s=str;
 int sum=0, flag=1;
 if(*s==NULL)
  return 0;
 while(*s==' ') /* skip space */
  s++; 
 if(*s=='-')
 {
  flag=-1;
  s++;
 }
 while(*s!='/0' && m_isxdigit(*s))
 {
  sum=*s-'0'+sum*10;
  s++;
 }
 return flag*sum;
}


/**************************************/
/**********       itoa()      *********/
/**************************************/
void m_itoa(int n)
{
 char *s=NULL;
 int i, j, mod, flag=0;
 char num[20];
 if(n<0) 
 {
  flag=1;
  n=-n;
 }
 i=0;
 do 
 {
  mod=n%10;
  n=n/10;  
  num[i++]=mod+'0';
 } while (n>0);
 if(flag) /* print '-' */
  printf("-");
 for(j=i-1; j>=0; j--) /* print reverse char */
 {
  printf("%c", num[j]);
 }
}


/**************************************/
/**********       atof()      *********/
/**************************************/
float m_atof(char *str)
{
 char *s=str;
 if(*s=='/0')
  return 0.0;
 float sum=0.0;
 int flag=1, pow=0;
 if(*s=='-')
 {
  flag=-1;
  s++;
 }
 while(*s!='/0')
 {
  if(*s=='.') /* dot */
  {
   pow=1;
   s++;
   continue;
  }
  sum=*s-'0'+sum*10;
  pow*=10;
  s++;
 }
 return flag*sum/pow;
}


/**************************************/
/**********       ftoa()      *********/
/**************************************/
void m_ftoa(float n)
{
 char num[20];
 int i, j, val, mod, flag, pow;
 float dot;
 if(n<-1e-6)
 {
  flag=1;
  n=-n;
 }
 i=0;
 val=(int)n; /* integer */
 dot=n-val;  /* decimal */
 do
 {
  mod=val%10;
  val=val/10;
  num[i++]=mod+'0';
 }while(val>0);
 if(dot>1e-6)
 {
  num[i]='.';
  pow=10;
 }
 do 
 {
  dot=dot*pow;
  mod=(int)dot;
  num[i++]=mod+'0';
  dot=dot-mod; /* error, why, float... help me */
 } while (dot>1e-6);
 if(flag)
  printf("-");
 for(j=i-1; j>=0; j--)
  printf("%c", num[j]);
}
posted @ 2015-07-08 10:39  枫奇丶宛南  阅读(82)  评论(0编辑  收藏  举报