⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cvt.c

📁 标准c库代码,可以应用于各个系统提供了大量的基本函数
💻 C
字号:
/* no user doc; fns defined here appear to be internal to library.   R. Pesch 15apr92*/#include <limits.h>#include <math.h>#include <stdio.h>#include <float.h>#include <ieeefp.h>#include <stdlib.h>#include <string.h>#include "local.h"#if defined(__v800) && defined(CA732_BUG)static _CONST char * lcset = "0123456789abcdef";static _CONST char * ucset = "0123456789ABCDEF";#elsestatic _CONST char *_CONST lcset = "0123456789abcdef";static _CONST char *_CONST ucset = "0123456789ABCDEF";#endif#ifdef __GNUC__char *_DEFUN (_llicvt, (buffer, value, type),	char *buffer _AND	long long value _AND	char type){  int base, i;  i = CVT_BUF_SIZE - 1;  buffer[i--] = '\0';  switch (type)    {    case 'd':    case 'i':      base = 10;      if (value < 0)	{	  if (value == LONG_LONG_MIN)	    {			/* Special case */	      long long temp;	      temp = (LONG_LONG_MAX % base) + 1;	      value = LONG_LONG_MAX / base;	      if (temp == base)		{		  value += 1;		  temp = 0;		}	      buffer[i--] = lcset[temp];	    }	  else	    value = -value;	}      while (i >= 0)	{	  buffer[i--] = lcset[value % base];	  if ((value /= base) == 0)	    break;	}      break;    case 'u':    case 'o':    case 'x':    case 'X':      if (type == 'u')	base = 10;      else if (type == 'o')	base = 8;      else	base = 16;      while (i >= 0)	{	  if (type == 'X')	    buffer[i--] = ucset[((unsigned long long) value) % base];	  else	    buffer[i--] = lcset[((unsigned long long) value) % base];	  if ((value = ((unsigned long long) value) / base) == 0)	    break;	}      break;    default:      break;    }  return (&buffer[++i]);}#endif#if LONG_MAX != INT_MAXchar *_DEFUN (_licvt, (buffer, value, type),	char *buffer _AND	long value _AND	char type){  int base, i;  i = CVT_BUF_SIZE - 1;  buffer[i--] = '\0';  switch (type)    {    case 'd':    case 'i':      base = 10;      if (value < 0)	{	  if (value == LONG_MIN)	    {			/* Special case */	      long temp;	      temp = (LONG_MAX % base) + 1;	      value = LONG_MAX / base;	      if (temp == base)		{		  value += 1;		  temp = 0;		}	      buffer[i--] = lcset[temp];	    }	  else	    value = -value;	}      while (i >= 0)	{	  buffer[i--] = lcset[value % base];	  if ((value /= base) == 0)	    break;	}      break;    case 'u':    case 'o':    case 'x':    case 'X':      if (type == 'u')	base = 10;      else if (type == 'o')	base = 8;      else	base = 16;      while (i >= 0)	{	  if (type == 'X')	    buffer[i--] = ucset[((unsigned long) value) % base];	  else	    buffer[i--] = lcset[((unsigned long) value) % base];	  if ((value = ((unsigned long) value) / base) == 0)	    break;	}      break;    default:      break;    }  return (&buffer[++i]);}#endifchar *_DEFUN (_icvt, (buffer, value, type),	char *buffer _AND	int value _AND	char type){  int base, i;  i = CVT_BUF_SIZE - 1;  buffer[i--] = '\0';  switch (type)    {    case 'd':    case 'i':      base = 10;      if (value < 0)	{	  if (value == INT_MIN)	    {			/* Special case */	      int temp;	      temp = (INT_MAX % base) + 1;	      value = INT_MAX / base;	      if (temp == base)		{		  value += 1;		  temp = 0;		}	      buffer[i--] = lcset[temp];	    }	  else	    value = -value;	}      while (i >= 0)	{	  buffer[i--] = lcset[value % base];	  if ((value /= base) == 0)	    break;	}      break;    case 'u':    case 'o':    case 'x':    case 'X':      if (type == 'u')	base = 10;      else if (type == 'o')	base = 8;      else	base = 16;      while (i >= 0)	{	  if (type == 'X')	    buffer[i--] = ucset[((unsigned) value) % base];	  else	    buffer[i--] = lcset[((unsigned) value) % base];	  if ((value = ((unsigned) value) / base) == 0)	    break;	}      break;    default:      break;    }  return (&buffer[++i]);}char *_DEFUN (_sicvt, (buffer, value, type),	char *buffer _AND	short value _AND	char type){  if (sizeof(short) == sizeof(int))    {      return (_icvt(buffer, value, type));    }  else     {      int base, i;      i = CVT_BUF_SIZE - 1;      buffer[i--] = '\0';      switch (type)	{	case 'd':	case 'i':	  base = 10;	  if (value < 0)	    value = -value;	  while (i >= 0)	    {	      buffer[i--] = lcset[value % base];	      if ((value /= base) == 0)		break;	    }	  break;	case 'u':	case 'o':	case 'x':	case 'X':	  value &= 0xffff;	  if (type == 'u')	    base = 10;	  else if (type == 'o')	    base = 8;	  else	    base = 16;	  while (i >= 0)	    {	      if (type == 'X')		buffer[i--] = ucset[value % base];	      else		buffer[i--] = lcset[value % base];	      if ((value /= base) == 0)		break;	    }	  break;	default:	  break;	}      return (&buffer[++i]);    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -