Code:
#include <iostream>

using namespace std;

void permute(char *str, char *out, char *used, int len, int recLev)
{
	int i;

	if (recLev == len) {
		cout<<out<<endl;
		return;
	}

	for (i =0; i<len; ++i) {
		if (used[i])
			continue;
		out[recLev] = str[i];
		used[i] = 1;
		permute(str,out,used,len,recLev+1);
		used[i] = 0;
	}
}


int main(void)
{
	char str[] = "abcd";
	char *used, *out;
	int len = strlen(str);

	out =(char *) malloc(len);
	out[len] = '\0';
	used = (char *) malloc(len);
	for (int i=0; i<len; ++i)
		used[i] =0;
	permute(str,out,used,len,0);
	return 0;
}