Вы не можете ничего присвоить массиву.Даже эта упрощенная программа потерпит неудачу:
char *foo(void) { }
int main(int argc, char *argv[])
{
char a[1];
a = foo();
return 0;
}
Как и на самом деле:
$ make fail
cc fail.c -o fail
fail.c: In function ‘main’:
fail.c:7:4: error: incompatible types when assigning to type ‘char[1]’ from type ‘char *’
make: *** [fail] Error 1
Либо переопределите str
как char *str
, либо найдите другой способ переопределитьнаписать свою программу, чтобы не пытаться присвоить массиву.(Как выглядит окружающий код? Вставленный код на самом деле не имеет смысла ...)