source:
buchla-68k/libsm/strrevi.c@
39a696b
Last change on this file since 39a696b was 6262b5c, checked in by , 7 years ago | |
---|---|
|
|
File size: 933 bytes |
Rev | Line | |
---|---|---|
[f40a309] | 1 | /* |
2 | ============================================================================= | |
3 | strrevi.c -- reverse a string in place | |
4 | Version 1 -- 1988-02-03 -- D.N. Lynx Crowe | |
5 | ||
6 | char * | |
7 | strrevi(s) | |
8 | char *s; | |
9 | ||
10 | Reverses string 's1' in place. Returns 's1'. | |
11 | ============================================================================= | |
12 | */ | |
13 | ||
[6262b5c] | 14 | #include "all.h" |
15 | ||
[7258c6a] | 16 | int8_t *strrevi(int8_t *s) |
[f40a309] | 17 | { |
[7258c6a] | 18 | register int8_t *p1, *p2; |
19 | register int32_t i; | |
20 | register int8_t c; | |
[f40a309] | 21 | |
22 | p1 = s; /* initialize left end pointer */ | |
23 | p2 = s; /* initialize right end pointer */ | |
24 | i = 0L; /* initialize character count */ | |
25 | ||
26 | while (*p2) { /* find the right end of the string */ | |
27 | ||
28 | ++i; | |
29 | ++p2; | |
30 | } | |
31 | ||
32 | --p2; /* adjust right end pointer */ | |
33 | i >>= 1; /* calculate swap count */ | |
34 | ||
35 | while (i--) { /* for each pair of characters ... */ | |
36 | ||
37 | c = *p2; /* ... swap right and left characters */ | |
38 | *p2-- = *p1; | |
39 | *p1++ = c; | |
40 | } | |
41 | ||
42 | return(s); /* return pointer to reversed string */ | |
43 | } |
Note:
See TracBrowser
for help on using the repository browser.