Weil Char-Arrays nicht per Zuweisung kopiert werden können; dafür gibts die Funktion strcpy. Und das Array muss genügend Platz haben, in diesem Fall also mindestens char b[4]; Oder, wenn die Länge erst zur Laufzeit feststeht, dann musst du nicht char b[N], sondern char * b deklarieren und dir den Speicher dynamisch holen: in C mit malloc, in C++ mit new.