In C, you deal with a string always via a pointer. The pointer by itself will not allocate memory for you, so you'll have to take care of that.
When you write char* s = "Hello world"; s will point to a "Hello world" buffer compiled into your code, called a string literal.
If you want to make a copy of that string, you'll have to provide a buffer, either through a char array or a malloc'ed bit of memory:
char myCopy[100];
strcpy(myCopy, s);
or
char *myCopy;
myCopy = (char*)malloc( strlen(s) + 1 );
strcpy(myCopy, s);
The malloc'ed memory will have to be returned to the runtime at some point, otherwise you have a memory leak. The char array will live on the stack, and will be automatically discarded.
Not sure what else to write here to help you...