Erro na declaração em C

Preciso construir uma tabela de índices utilizando ponteiros, mas encontrei um erro de compilação que não consigo resolver.
A mensagem de erro é:
request for member ‘cod_cliente’ in something not a structure or union.
O erro aparece na linha:

[color=darkred]cod_cliente[i] = pc.cod_cliente;[/color]

Estou utilizando o Dev C++ 4.9.9. Segue parte do código…

typedef struct{
    char cod_cliente[7];
    char nome[40];
    char fone[15];
    } clientes;

void IndiceClientes(clientes *pc, FILE *arq_c) {
     int quant=0, i;
     char *aux;
     arq_c = fopen("clientes.asr","rb");
     while(!feof(arq_c)) {
         fread(&pc,sizeof(clientes),1,arq_c);
         quant++;
     }
     fclose(arq_c);
     char cod_cliente[quant][7];
     char *pcod_cliente[quant];
     arq_c = fopen("clientes.asr","rb");
     i=0;
     while(!feof(arq_c)){
         fread(&pc,sizeof(clientes),1,arq_c);
         cod_cliente[i] = pc.cod_cliente;
         i++;
     }
     fclose(arq_c);
     for(i=0; i<quant; i++) {
         if (*pcod_cliente[i] > *pcod_cliente[i+1]){
             aux = pcod_cliente[i];
             pcod_cliente[i] = pcod_cliente[i+1];
             pcod_cliente[i+1] = aux;
         }
     }
}

C não é Java, e copiar strings não se pode fazer com "=" (em C, é claro; em C++ você pode usar o tipo std::string, onde "=" funciona direitinho).
Você pode usar:

strcpy (cod_cliente[i], (*pc).cod_cliente);

ou então a forma mais recomendada,

strcpy (cod_cliente[i], pc->cod_cliente);

p->m é sempre equivalente, em C, a (*p).m