To represent the fact that the value is not present you have two choices:
1) If the whole char range is meaningful and you cannot reserve any value, then use char* instead of char:
char** c = new char*[N];
c[0] = NULL; // no character
*c[1] = ' '; // ordinary character
*c[2] = 'a'; // ordinary character
*c[3] = '\0' // zero-code character
Then you'll have c[i] == NULL for when character is not present and otherwise *c[i] for ordinary characters.
2) If you don't need some values representable in char then reserve one for indicating that value is not present, for example the '\0' character.
char* c = new char[N];
c[0] = '\0'; // no character
c[1] = ' '; // ordinary character
c[2] = 'a'; // ordinary character
Then you'll have c[i] == '\0' for when character is not present and ordinary characters otherwise.
There is no such thing as the "empty character" ''.
If you need a space character, that can be represented as a space: c[i] = ' ' or as its ASCII octal equivalent: c[i] = '\040'. If you need a NUL character that's c[i] = '\0'.
It might be useful to assign a null in a string rather than explicitly making some index the null char '\0'. I've used this for testing functions that handle strings ensuring they stay within their appropriate bounds.
String before = EMPTY_SPACE+TAB+"word"+TAB+EMPTY_SPACE;
Where EMPTY_SPACE = " " (this is String) TAB = '\t' (this is Character)
String after = before.replaceAll(" ", "").replace('\t', '\0'); means after = "word"
This is a case of single quotes and double quotes having different meanings.
"" is translated to (const char[1])"" by the compiler. This lets you use it in initializations of character arrays.
'' is not, and would be an unterminated empty string. Because you can't tell if a string is empty without terminating it, this is not valid code. Hence the error.
You almost certainly wanted to do
c[i] = '\0';
If c was indeed a text string, this sets the string's length to i by terminating it on that character.
If c was not actually intended as a text string, that's still the value you are suppose to use to mean that there's nothing there, because it's false, and any other character is true.
If you actually meant to put a space there, then you wanted