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.
char* szUserInput;
dbPrintC("Please enter your name: ");
szUserInput = dbInput();
dbPrintC("Hi, ");
dbPrint(szUserInput);
delete [] szUserInput;
szUserInput = NULL;
Edit:
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.