Rev 8622 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 8622 | Rev 8629 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | #include |
1 | #include |
- | 2 | #include |
|
2 | /* |
3 | |
3 | char* itoa(int n, char* s) |
4 | char *__reverse(char *str) |
4 | { |
5 | { |
- | 6 | char tmp, *src, *dst; |
|
5 | int sign; |
7 | size_t len; |
- | 8 | if (str != NULL){ |
|
- | 9 | len = strlen (str); |
|
- | 10 | if (len > 1) { |
|
- | 11 | src = str; |
|
- | 12 | dst = src + len - 1; |
|
- | 13 | while (src < dst) { |
|
- | 14 | tmp = *src; |
|
- | 15 | *src++ = *dst; |
|
- | 16 | *dst-- = tmp; |
|
6 | char *ptr; |
17 | } |
- | 18 | } |
|
- | 19 | } |
|
7 | ptr = s; |
20 | return str; |
- | 21 | } |
|
8 | 22 | ||
- | 23 | /* itoa from K&R */ |
|
9 | if(n == (int)0x80000000) |
24 | void itoa(int n, char s[]) |
- | 25 | { |
|
10 | return strcpy(s, "-2147483648"); // overflowed -n |
26 | int i, sign; |
11 | 27 | ||
12 | if ((sign = n) < 0) n = -n; |
28 | if ((sign = n) < 0) /* record sign */ |
- | 29 | n = -n; /* make n positive */ |
|
13 | do { |
30 | i = 0; |
- | 31 | ||
- | 32 | do { /* generate digits in reverse order */ |
|
14 | *ptr++ = n % 10 + '0'; |
33 | s[i++] = n % 10 + '0'; /* get next digit */ |
15 | } while ((n = n / 10) > 0); |
34 | } while ((n /= 10) > 0); /* delete it */ |
- | 35 | ||
- | 36 | if (sign < 0) |
|
16 | if (sign < 0) *ptr++ = '-'; |
37 | s[i++] = '-'; |
- | 38 | ||
- | 39 | __reverse(s); |
|
17 | *ptr = '\0'; |
40 | s[i] = '\0'; |
18 | return strrev(s); |
41 | return; |
19 | } |
42 | }>>> |
20 | */>> |
- | |
21 | 43 |