View Single Post
Old 10-18-2009, 07:11 AM  
keenan
Registered User
 
Join Date: Jan 2004
Location: Canadia
Posts: 54
Code:
#include<stdio.h>

bool __cdecl Increment( char* lpToken, unsigned long dwLen )
{
	char* pStart = lpToken;
	lpToken = &lpToken[ dwLen ];
	
	do
	{
		switch ( ++lpToken[ 0 ] )
		{
		case 'Z'+1:
			lpToken[0] = 'a';
			return 1;
			break;
		case 'z'+1:
			lpToken[0] = '0';
			return 1;
			break;
		case '9'+1:
			lpToken[0] = 'A';
			break;
		default:
			return 1;
		}
		lpToken--;
	} while ( lpToken >= pStart );

	return 0;
}


int main( void )
{

	char szString[ 10 ];
	unsigned long dwLength = 1;
	*(unsigned short*)(szString) = 'A'; // unsigned short so we can copy the sz null.
	

	for ( unsigned long i = dwLength - 1; i < sizeof( szString ) -1; i++ )
	{
		do
		{
			printf( "%s\n", szString );
			//getchar( ); // uncomment to pause inc display.

		} while ( Increment( szString, dwLength -1 ) );
		*(unsigned short*)(szString+dwLength++) = 'A'; // ''
	}

	

	return 0;
}
credits to a helpful guy at another forum.

Quote:
Originally Posted by TheUmbra
For optimization you will need to remove the excessive branching in Increment().
__________________
http://www.bleepo.org
keenan is offline   Share thread on Digg Share thread on Twitter Share thread on Reddit Share thread on Facebook Reply With Quote