#include <stdio.h>
#include <string.h>
#include <conio.h>
void reverse_block(char* p, int start, int len)
{
int a, b; a = b = 0;
for (a = start, b = start+len; a <= b; a++, b--)
{
char tmp = p[a];
p[a] = p[b];
p[b] = tmp;
}
}
// I like pie
// eip ekil I
// pie like I
void reverse_words(char* p)
{
// I like pie
int len = strlen(p)-1;
for (int idx = 0; idx < (len/2); idx++)
{
char tmp = p[idx];
p[idx] = p[len-idx];
p[len-idx] = tmp;
}
// eip ekil I
int block_start = 0;
int block_end = 0;
for (int idx = 0; idx <= len+1; idx++)
{
if (p[idx] == ' ' || p[idx] == '\0')
{
block_end = idx-1;
reverse_block(p, block_start, block_end - block_start);
block_start = block_end + 2;
}
else
{
continue;
}
}
}
int main()
{
char buf[64];
strcpy(buf, "Here is an example sentence for testing");
reverse_words(buf);
getchar();
return 0;
}