关闭

几个常用的函数原型

标签: strcpyatoiitoaislowerissupper
6495人阅读 评论(0) 收藏 举报
分类:
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]);
}
1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:494259次
    • 积分:5761
    • 等级:
    • 排名:第4953名
    • 原创:98篇
    • 转载:31篇
    • 译文:0篇
    • 评论:70条
    博客专栏
    最新评论