Pers.narod.ru. Алгоритмы. Простые реализации atoi и itoa |
...то есть, стандартных сишных функций преобразования строки в число и числа в строку. Понадобились "в исходниках", а быстрее написать, чем найти. На совершенство отнюдь не претендуют, нужны были только для иллюстрации принципа и алгоритма.
#include <iostream.h>
#include <string.h>
#include <ctype.h>
char *itoa (int n, char *s) {
char *t=s; int z=0;
if (n<0) { z=1; n=-n; }
do *s++=n%10+'0'; while (n/=10);
if (z) *s++='-';
*s='\0';
return strrev(t);
}
int atoi (char *s) {
int z=0,n=0;
while(isspace(*s)) s++;
if (*s=='-') { z=1; s++; } else if (*s=='+') s++;
while (isdigit(*s)) n=10*n+*s++-'0';
return (z?-n:n);
}
void main () {
int n=-31289;
char buf[80];
cout << "\nitoa=" << itoa (n,buf);
cout << "\natoi=" << atoi (buf);
cin.get();
}
Больше всякого такого вот тут, возможно, не всё доделано.
|
|