#include <stdio.h>
#include <string.h>

#define	MAX_LEN	20

void	espandi( char *s, int ptr )
{
	/* Condizione di terminazione */
	if( ptr == strlen( s ) )
		printf( "%s\n", s );
	else
	{
		/*
			Se il carattere e` x allora e` necessario
			sostituirlo prima con lo 0 e poi con l' 1
		*/
		if( s[ptr] == 'x' )
		{
			s[ptr] = '0';
			espandi( s, ptr+1 );	/* Chiamata ricorsiva */
			s[ptr] = '1';
			espandi( s, ptr+1 );	/* Chiamata ricorsiva */

			/* ATTENZIONE: al termine dell'espansione
			   e` necessario ripristinare il valore
			   originario */
			s[ptr] = 'x';
		}
		else
			espandi( s, ptr+1 );	/* Chiamata ricorsiva */
	}
}

int main( void )
{
	char	stringa[MAX_LEN+1];

	/*
		Lettura dato di input
	*/
	printf( "Introduci la stringa da espandere: " );
	scanf( "%s", stringa );

	/*
		Espansione della stringa
	*/
	espandi( stringa, 0 );

	return( 0 );
}