Buon pomeriggio ragazzi
Come da titolo sto provando a scrivere il codice di un'array di strutture che prende i dati generici riguardo a degli operai(il cui numero e' scelto dall'utente) li memorizza e quindi mi permette di fare una ricerca attraverso il nome dell'operaio visualizzando poi tutta la scheda relativa a quest'ultimo
Il problema qui e' che quando arrivo alla string compare per controllare se esiste un nome che corrisponde a quello che voglio cercare il programma da "errore di segmentazione"
Tutti gli errori scompaiono se invece dell'operatore freccia ( -> ) uso l'operatore punto ( . ) per accedere ai campi delle strutture (togliendo anche l'asterisco nella linea della typedef).
Immagino che sia un problema derivante dall'uso dei puntatori però non so piu cosa tentare...

Per compilare questo codice utilizzo il comando gcc -std=gnu99 c.c quindi la dichiarazione nel for di un valore non è un problema.
codice:
#include<stdio.h>
#include<string.h>
#define NMAX 30


struct scheda
{
    char nome[40];
    char mansione[40];
    int ore;
    int salario;
};


typedef struct scheda *operaio;
                   
int main(void)               
{
 operaio operaio[NMAX];
 char cerca[20],nome[40],mansione[40];
 int n,pos,trovato,ore,salario;


    printf("Inserisci il numero di dipendenti: ");
    scanf("%d", &n);
    {
        for(int i=0; i<n; i++)
        {
            printf("\nInserisci il nome dell'dipendente: ");
            scanf("%s", nome);
            strcpy(operaio[i]->nome, nome);
            printf("\nInserisci il mansione: ");
            scanf("%s", mansione);
            strcpy(operaio[i]->mansione, mansione);
            printf("\nInserisci ore di lavoro: ");
            scanf("%d", &operaio[i]->ore);
            printf("\nQuant'è la retribuzione di questo operaio? ");
            scanf("%d", &operaio[i]->salario);
        }
        printf("\nInserisci il nome dell'operaio da cercare! ");
        scanf("%s", cerca);


        pos=0;
        trovato=0;
        while(pos<n && !trovato)
        {
            if(strcmp(operaio[pos]->nome, cerca)==0)
            {
                trovato=1;
            }
            else
            {
                pos++;
            }
        }


        if(!trovato)
        {
            printf("\nOperaio non trovato!\n");
        }
        else
        {
            printf("\nTrovato in posizione %d.\nScheda:\nNome: %s\nMansione: %s\nOre lavorative: %d\nSalario: %d\n", 
            pos+1,operaio[pos]->nome,operaio[pos]->mansione,operaio[pos]->ore,operaio[pos]->salario);
        }
    }
}