Это объявление не делает то, что вы думаете:
typedef struct std_thread
{
...
}std[5];
Это объявляет struct
с именем std_thread
, а затем создает typedef
с именем std
, что означает "массив из 5 struct std_thread
объектов ".
Возможно, вам нужно одно из этих двух определений, чтобы объявить глобальный объект с именем std
как массив из 5 struct std_thread
:
typedef struct std_thread
{
...
} std_thread;
std_thread std[5];
// OR
struct std_thread
{
..
} std[5];
В первом случае мы также создаем typedef
с именем std_thread
в качестве псевдонима для struct std_thread
;во втором случае мы этого не делаем.
Более того, как уже говорили другие, вы не можете копировать массивы символов по присваиванию.Вы должны скопировать их, используя такие функции, как strcpy(3)
или strncpy(3)
.При использовании strcpy
вы должны убедиться, что целевой буфер достаточно велик для размещения желаемой строки.Также имейте в виду, что strncpy
не обязательно заканчивает нулем целевую строку , поэтому используйте ее с осторожностью.