Erro em C

eai galera,
alguem sabe onde esta o erro nesse fragmento?:

struct adc_contato contato; char buffer[60]; printf("Nome: "); gets(buffer); ---> contato.nome = (char*) malloc((strlen(buffer)+1)*sizeof(char)); strcpy(contato.nome, buffer);
o compilador diz que tem tipos incopativeis, mas nao sei aonde

abracos

Como está declarado o struct adc_contato ?

assim:struct adc_contato //para adicionar contatos { char nome[60]; long int telefone; }; int opcao; char cont = 's';

Quando você declarou:

char nome[60];

Já reservou espaço de memória para nome.
Portanto, usar malloc é desnecessário.

Abs.

Arrays não são ponteiros. E ponteiros não são arrays.
Se você quiser usar um ponteiro para char e inicializa-lo dinamicamente, declare nome como char*

Caso contrário, você já reservou espaço fixo para 30 chars, e o array permite acessa-los diretamente.