📄 ltoa.c
字号:
/* 1.0 05-07-85 (ltoa.c) ************************************************************************ * Robert C. Tausworthe * * Jet Propulsion Laboratory * * Pasadena, CA 91009 1985 * ************************************************************************ * * These functions are modified versions of itoa() found in Kernighan * and Ritchie, page 60, with modifications of exercises 3-3 and 3-5, * for use with the long data type. * *----------------------------------------------------------------------*/#include "defs.h"#include "stdtyp.h"#include "errno.h"/************************************************************************/ STRINGltoa(s, n, w)/*----------------------------------------------------------------------*/STRING s;long n;{ STRING ltoab(); return ltoab(s, n, w, 10);}/*\p*********************************************************************/ STRINGltoab(s, n, w, b) /* convert n to a minimum of |w| ascii characters, base b, and put in s. Use 0-fill if w < 0. Return pointer to s. *//*----------------------------------------------------------------------*/STRING s;long n;{ LOCAL char digits[] = "0123456789abcdefghijklmnopqrstuvwxyz"; int i, j; BOOL sign; char c, fill; if (n < 0L) { n = -n; sign = TRUE; } else sign = FALSE; if (w < 0) { fill = '0'; w = -w; } else fill = ' '; i = 0; do /* generate digits in reverse order: */ s[i++] = digits[(int)(n % b)]; while (n /= b); if (sign) /* put the sign into the string.*/ s[j = i++] = '-'; else j = i - 1; while (i < w) /* expand to proper width. */ s[i++] = fill; /* i is just beyond last filled postion */ if (--i ISNT j AND sign AND fill IS '0') { s[i] = s[j]; /* get the sign. */ s[j] = fill; /* fill in over it */ } s[++i] = NULL; /* add null terminator */ for (i--, j = 0; j < i; j++, i--) /* now reverse chars */ { c = s[j]; s[j] = s[i]; s[i] = c; } return s;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -