Something like this?
Code:
#include <stdio.h>
#include <string.h>
void revstr(char *str)
{
struct str_s
{
char ch;
char *ptr;
} strarray[strlen(str)], temp;
int len, i, j;
for(len = 0;str[len];++len)
{
strarray[len].ch = str[len];
strarray[len].ptr = str+len;
}
for(i = 0;i < len;++i)
for(j = i+1;j < len;++j)
if(strarray[i].ptr < strarray[j].ptr)
{
memcpy(&temp, &strarray[i], sizeof(struct str_s));
memcpy(&strarray[i], &strarray[j], sizeof(struct str_s));
memcpy(&strarray[j], &temp, sizeof(struct str_s));
}
for(i = 0;i < len;++i)
str[i] = strarray[i].ch;
str[i] = '\0';
}
int main(void)
{
char str[] = "abcdefg";
printf("String: %s\n", str);
revstr(str);
printf("Reversed: %s\n", str);
return 0;
}
Code:
itsme@dreams:~/C$ ./revstr
String: abcdefg
Reversed: gfedcba