I thought I should point this out. When using DGDK functions that return a char*. It is best to return the string to a char* variable, to avoid memory leaks. This way you can use the delete operator to free the memory.
dbPrintC("Please enter your name: ");
szUserInput = dbInput();
delete  szUserInput;
szUserInput = NULL;
Just noticed the Dark GDK documentation state the syntax as:
void dbInput ( char* szStatement, int iInput )
Wrong! I never knew that, I tend to go by what Visual Studio's IntelliSense says.