When initializing an array, C allows you to fill it with values. So
char s[100] = "abcd";
is basically the same as
int s[3] = { 1, 2, 3 };
but it doesn’t allow you to do the assignment since s
is an array and not a free pointer. The meaning of
s = "abcd"
is to assign the pointer value of abcd
to s
but you can’t change s
since then nothing will be pointing to the array.
This can and does work if s
is a char*
– a pointer that can point to anything.
If you want to copy the string simple use strcpy
.