zoukankan      html  css  js  c++  java
  • 经典面试题 atoi&itoa

    long  atol(const char *nptr)
    {
    	int c; /* current char */
    	long total; /* current total */
    	int sign; /* if ''-'', then negative, otherwise positive */
    
    	/* skip whitespace */
    	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''); /* accumulate digit */
    	c = (int)(unsigned char)*nptr++; /* get next char */
    
    	}
    
    	if (sign == ''-'')
    		return -total;
    	else
    		return total; /* return result, negated if necessary */
    }
    char* _itoa(int value, char* string, int radix)
    {
    	char tmp[33];
    	char* tp = tmp;
    	int i;
    	unsigned v;
    	int sign;
    	char* sp;
    
    	if (radix > 36 || radix <= 1)
    	{
    		__set_errno(EDOM);
    		return 0;
    	}
    
    	sign = (radix == 10 && value < 0);
    	if (sign)
    		v = -value;
    	else
    		v = (unsigned)value;
    
    	while (v || tp == tmp)
    	{
    	i = v % radix;
    	v = v / radix;
    	if (i < 10)
    		*tp++ = i+''0'';
    	else
    		*tp++ = i + ''a'' - 10;
    	}
    
    	if (string == 0)
    		string = (char*)malloc((tp-tmp)+sign+1);
    	sp = string;
    
    	if (sign)
    		*sp++ = ''-'';
    	while (tp > tmp)
    	*sp++ = *--tp;
    	*sp = 0;
    	
    	return string;
    }
  • 相关阅读:
    snmp扫描
    操作系统扫描
    服务扫描
    端口扫描,僵尸机扫描
    主动信息收集:四层发现
    主动信息收集:三层发现
    主动信息收集:二层发现
    RECON-NG
    metadata信息的采集
    cupp字典生成器使用
  • 原文地址:https://www.cnblogs.com/caleb/p/2174967.html
Copyright © 2011-2022 走看看