常见c函数源码,字符串处理,strcp…


  • 1./
  •         long total;        
  •         int sign;          

  •        
  •         while ( isspace((int)(unsigned char)*nptr) )
  •             ++nptr;

  •         c = (int)(unsigned char)*nptr++;
  •         sign = c;          
  •         if (c == '-' || c == '+')
  •             c = (int)(unsigned char)*nptr++;    

  •         total = 0;

  •         while (isdigit(c)) {
  •             total = 10 * total + (c - '0');    
  •             c = (int)(unsigned char)*nptr++;    
  •         }

  •         if (sign == '-')
  •             return -total;
  •         else
  •             return total;  
  • }
  • 3./
  • {
  •         va_list arglist;
  •         int buffing;
  •         int retval;

  •         va_start(arglist, format);

  •         _ASSERTE(format != NULL);

  •         _lock_str2(1, stdout);

  •         buffing = _stbuf(stdout);

  •         retval = _output(stdout,format,arglist);

  •         _ftbuf(buffing, stdout);

  •         _unlock_str2(1, stdout);

  •         return(retval);
  • }
  • 9./
  •        
  •         while (count--) {
  •                 *(char *)dst = *(char *)src;
  •                 dst = (char *)dst + 1;
  •                 src = (char *)src + 1;
  •         }
  • #endif  

  •         return(ret);
  • }
  • 10./
  •         while (count--) {
  •                 *(char *)dst = (char)val;
  •                 dst = (char *)dst + 1;
  •         }
  • #endif  

  •         return(start);
  • }

  • 12./

  •         while( *cp++ = *src++ ) ;      

  •         return( dst );                  

  • }
  • 14./

  • #if defined (_WIN32)
  •         if ( __lc_handle[LC_CTYPE] == _CLOCALEHANDLE ) {
  • #endif  
  •             while ( count-- )
  •             {
  •                 if ( (*(unsigned char *)first == *(unsigned char *)last) ||
  •                      ((f = _TOLOWER( *(unsigned char *)first )) ==
  •                       (l = _TOLOWER( *(unsigned char *)last ))) )
  •                 {
  •                     first = (char *)first + 1;
  •                     last = (char *)last + 1;
  •                 }
  •                 else
  •                     break;
  •             }
  • #if defined (_WIN32)
  •         }
  •         else {
  •             _lock_locale( local_lock_flag )
  •             while ( count-- )
  •                 if ( (*(unsigned char *)first == *(unsigned char *)last) ||
  •                      ((f = _tolower_lk( *(unsigned char *)first )) ==
  •                       (l = _tolower_lk( *(unsigned char *)last ))) )
  •                 {
  •                     first = (char *)first + 1;
  •                     last = (char *)last + 1;
  •                 }
  •                 else
  •                     break;
  •             _unlock_locale( local_lock_flag )
  •         }
  • #endif  

  •         return ( f - l );
  • }

  • 16./
  •         if (dst <= src || (char *)dst >= ((char *)src + count)) {
  •                
  •                 while (count--) {
  •                         *(char *)dst = *(char *)src;
  •                         dst = (char *)dst + 1;
  •                         src = (char *)src + 1;
  •                 }
  •         }
  •         else {
  •                
  •                 dst = (char *)dst + count - 1;
  •                 src = (char *)src + count - 1;

  •                 while (count--) {
  •                         *(char *)dst = *(char *)src;
  •                         dst = (char *)dst - 1;
  •                         src = (char *)src - 1;
  •                 }
  •         }
  • #endif  

  •         return(ret);
  • }
  • 17./

  • #if defined (_WIN32)
  •         if ( __lc_handle[LC_CTYPE] == _CLOCALEHANDLE ) {
  • #endif  
  •             do {
  •                 if ( ((f = (unsigned char)(*(dst++))) >= 'A') && (f <= 'Z') )
  •                     f -= ('A' - 'a');

  •                 if ( ((l = (unsigned char)(*(src++))) >= 'A') && (l <= 'Z') )
  •                     l -= ('A' - 'a');
  •             } while ( f && (f == l) );
  • #if defined (_WIN32)
  •         }
  •         else {
  •             _lock_locale( local_lock_flag )
  •             do {
  •                 f = _tolower_lk( (unsigned char)(*(dst++)) );
  •                 l = _tolower_lk( (unsigned char)(*(src++)) );
  •             } while ( f && (f == l) );
  •             _unlock_locale( local_lock_flag )
  •         }
  • #endif  

  •         return(f - l);
  • }

  • 18./
  •         static char *nextoken;
  • #endif  

  •        
  •         for (count = 0; count < 32; count++)
  •                 map[count] = 0;

  •        
  •         do {
  •                 map[*ctrl >> 3] |= (1 << (*ctrl & 7));
  •         } while (*ctrl++);

  •        
  •         if (string)
  •                 str = string;
  •         else
  • #ifdef _MT
  •                 str = ptd->_token;
  • #else  
  •                 str = nextoken;
  • #endif  

  •        
  •         while ( (map[*str >> 3] & (1 << (*str & 7))) && *str )
  •                 str++;

  •         string = str;

  •        
  •         for ( ; *str ; str++ )
  •                 if ( map[*str >> 3] & (1 << (*str & 7)) ) {
  •                         *str++ = '\0';
  •                         break;
  •                 }

  •        
  • #ifdef _MT
  •         ptd->_token = str;
  • #else  
  •         nextoken = str;
  • #endif  

  •        
  •         if ( string == str )
  •                 return NULL;
  •         else
  •                 return string;
  • }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zlingh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值