Skip to content

Instantly share code, notes, and snippets.

@qh-huang
Created January 22, 2017 08:57
Show Gist options
  • Save qh-huang/a67b89c9d15a6f45c596767f72f84eb1 to your computer and use it in GitHub Desktop.
Save qh-huang/a67b89c9d15a6f45c596767f72f84eb1 to your computer and use it in GitHub Desktop.
#include <stdio.h>
#include <string.h>
void swap(char* a, char* b)
{
*a ^= *b;
*b ^= *a;
*a ^= *b;
}
void reverse_imp(char* ch, int offset) {
if (offset < 2) return;
swap(ch, ch+offset);
reverse_imp(ch+1, offset-2);
}
char* reverse(char* str)
{
//printf("%s, len=%lu\n", str, strlen(str));
reverse_imp(str, strlen(str)-1);
//printf("%s, len=%lu\n", str, strlen(str));
return str;
}
int main()
{
char str1[] = "abcdefg";
char str2[] = "abcdefgh";
printf("%s\n", str1);
reverse(str1);
printf("%s\n\n", str1);
printf("%s\n", str2);
reverse(str2);
printf("%s\n", str2);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment