A parte il fatto che chiamare il tipo e il vettore con lo stesso simbolo (operaio) non è una buona idea, in ogni caso hai preparato un vettore di 30 puntatori a struttura ma non hai mai allocato lo spazio per tali strutture.
Prima di fare
strcpy(operaio[i]->nome, nome);
devi allocare l'elemento a cui punta operaio[i] con
operaio[i] = (struct operaio *)malloc(sizeof(struct operaio));

Rispondi quotando