Q:

char * assignment: What's wrong with this code?

When I run into these code in lldb, I found it always goes *wchar_string[0] = character; this line and never loop out, 
This code gives Segmentation fault: 11.
This code, what's wrong?
wchar_t *wchar_string[1];
*wchar_string[0] = character;
wcstombs(retstring, (const wchar_t *)wchar_string, 6);

A:

You probably want
wchar_t wchar_string[2];
wchar_string[0] = character;
wchar_string[1] = 0;

You've already got an array.  You don't need any pointers, so you don't want those * characters.

