1
I need to physically delete a record created within a struct defined in my program, but in every way I tried (Define it as NULL, Create another struct and save all records that were not deleted on it).
I registered inside a vector (struct) the following records:
- Joao
 - Maria
 - Jose
 - Peter
 - Paul
 
and by excluding the 3 - Jose I need my vector to look like this:
- Joao
 - Maria
 - Peter
 - Paul
 
Code:
// Definindo as bibliotecas padrao
#include <stdio.h>
#include <stdlib.h>
// Definindo as contantes utilizadas
#define MAX 10
// Definindo um tipo de estrutura com o nome movimento
typedef struct {
    int id_doc;
    char nome_doc[50];
    char data_reg[10];
    char nome_resp[50];
    int num_orig;
    char tipo_doc;
// Campo para definir se o registro esta habilitado ou nao
    char status;
}movimento;
// Declarando as variaveis auxiliares
void inclui_dados(int, movimento *);
void novo_mov(int *, movimento *);
void imprime_registro(movimento *);
void modifica_registro(int *, movimento *);
void desabilita_registro(int *, movimento *);
void habilita_registro(int *, movimento *);
void excluir_registro(int *, movimento *);
// Inicio do programa
int main(){
    // Declarando uma estrutura do tipo movimento
    movimento reg_mov[MAX];
    // Declarando as variaveis do tipo inteiro e caracter
    int cont_registro = 0;
    char ch, op, i;
    // Definindo a formatacao da tela
    system("color 1E");
    // Faca
    do{
        // Limpando a tela
        system("CLS");
        // Exibindo horario e data de inicializacao do sistema
        printf("Sistema iniciou em Data: %s\t\tHora: %s\n\n", __DATE__, __TIME__);
        // Apresentando as opcoes para o usuario
        puts("Entre com o operador:\n1 - Cadastro\n2 - Consulta\n3 - Modificar\n4 - Desativar\n5 - Habilitar\n6 - Excluir\ns - Sair\n");
        // Armazena a opcao solicitada
        ch = getchar(); fflush(stdin);
        // Seleciona a opcao
        switch (ch)
        {
            // Caso 1 chame a funcao para cadastrar novos registros
        case '1':
            // Funcao para cadastrar novo documento
            novo_mov(&cont_registro, ®_mov[0]);
            break;
            // Caso 2 chame a funcao para imprimir os registros
        case '2':
            // De 0 ate o numero de registro cadastrados incremente em uma unidade
            for (i = 0; i<cont_registro; i++){
                // Se o status do registro for s faca
                if ((reg_mov + i)->status == 's'){
                    // Funcao para imprimir os registros
                    imprime_registro(®_mov[i]);
                    // Verifica com o usuario se deseja imprimir mais um registro
                    printf("Imprime mais um(s/n)?");
                    // Armazena a opcao selecionada
                    op = getchar(); fflush(stdin);
                    // Se nao termine o laco
                    if (op == 'n')
                        break;
                }
                // Se nao
                else{
                }
            }
            break;
            // Caso 3 chame a funcao para modificar os registros            
        case '3':
            // Funcao para modificar os registros
            modifica_registro(&cont_registro, ®_mov[0]);
            ch = getchar(); fflush(stdin);
            break;
            // Caso 4 chame a funcao para desabilitar um registro
        case '4':
            // Funcao para desabilitar um registro
            desabilita_registro(&cont_registro, ®_mov[0]);
            ch = getchar(); fflush(stdin);
            break;
            // Caso 5 chame a funcao para desabilitar um registro
        case '5':
            // Funcao para habilitar um registro
            habilita_registro(&cont_registro, ®_mov[0]);
            ch = getchar(); fflush(stdin);
            break;
            // Caso 6 chame a funcao para excluir um registro
        case '6':
            // Funcao para habilitar um registro
            excluir_registro(&cont_registro, ®_mov[0]);
            ch = getchar(); fflush(stdin);
            break;
        }
    }
    // Enquanto
    while (ch != 's');
    // Retorna zero ou erro de execucao
    return 0;
}
// Inicio da funcao para incluir um novo registro no vetor
void novo_mov(int *idx, movimento *pt_mov){
    pt_mov += (*idx);
    inclui_dados(0, pt_mov);
    (*idx)++;
}
// Fim da funcao para incluir um novo registro no vetor
// Inicio da funcao para incluir os dados de um novo registro
void inclui_dados(int n, movimento *pt_mov){
    // Limpa a tela
    system("CLS");
    // Cadastro do registro
    printf("\nCadastra Registro\n\n");
    // Se n for diferente de 0 pule a primeira etapa
    if (n == 0){
        // Solicita a identificacao do documento
        printf("Identificador do documento:");
        // Armazena a identificacao do documento
        scanf_s("%d", &(pt_mov->id_doc)); fflush(stdin);
    }
    // Solicita e armazena os demais dados do documento
    printf("Nome do documento:");
    gets_s(pt_mov->nome_doc);
    printf("Data do Registro:");
    gets_s(pt_mov->data_reg);
    printf("Nome do responsavel:");
    gets_s(pt_mov->nome_resp);
    printf("Numero do doc de origem:");
    scanf_s("%d", &(pt_mov->num_orig)); fflush(stdin);
    printf("Tipo do documento:");
    scanf_s("%c", &(pt_mov->tipo_doc)); fflush(stdin);
    // Define o status do documento como s para habilitado
    pt_mov->status = 's';
}
// Fim da funcao para incluir os dados de um novo registro
// Inicio da funcao para imprimir um registro
void imprime_registro(movimento *pt_mov){
    // Limpa a tela
    system("CLS");
    // Imprime o registro
    printf("\nImprime Registro\n\n");
    // Imprime os dados do registro
    printf("Identificador do documento: %d\n", pt_mov->id_doc);
    printf("Nome do documento: %s\n", pt_mov->nome_doc);
    printf("Data do Registro: %s\n", pt_mov->data_reg);
    printf("Nome do responsavel: %s\n", pt_mov->nome_resp);
    printf("Numero do doc de origem: %d\n", pt_mov->num_orig);
    printf("Tipo do documento: %c\n", pt_mov->tipo_doc);
    printf("Status (S para habilitado e N para desabilitado): %c\n", pt_mov->status);
}
// Fim da funcao para imprimir um registro
// Inicio da funcao para modificar um registro
void modifica_registro(int *idx, movimento *pt_mov){
    // Declara as variaveis do tipo inteiro e caractere
    int i, id;
    char op;
    // Limpa a tela
    system("CLS");
    // Modifica o registro
    printf("\nModifica Registro\n\n");
    // Solicita o documento a ser modificado
    printf("Entre com o codigo do documento:");
    // Armazena o documento a ser modificado
    scanf_s("%d", &id); fflush(stdin);
    // De zero ate o valor de idx incremente em uma unidade
    for (i = 0; i<(*idx); i++){
        // Verifica se o registro existe
        if ((pt_mov + i)->id_doc == id){
            // Funcao para imprimir o registro
            imprime_registro(pt_mov + i);
            // Verifica se o registro impresso sera o mesmo a ser modificado
            printf("Deseja modificar(s/n)?");
            op = getchar(); fflush(stdin);
            // Se nao retorne para o menu principal
            if (op == 'n')
                return;
            // Se sim chame a funcao para incluir dados no registro
            inclui_dados((int)1, (pt_mov + i));
        }
    }
}
// Fim da funcao para modificar um registro
// Inicio da funcao para desabilitar um registro
void desabilita_registro(int *idx, movimento *pt_mov){
    // Declara as variaveis do tipo inteiro e caractere
    int i, id;
    char op;
    // Limpa a tela
    system("CLS");
    // Desabilita o registro
    printf("\nDesabilita Registro\n\n");
    // Solicita o documento a ser desabilitado
    printf("Entre com o codigo do documento:");
    // Armazena o documento a ser desabilitado
    scanf_s("%d", &id); fflush(stdin);
    // De zero ate o valor de idx incremente em uma unidade
    for (i = 0; i<(*idx); i++){
        // Verifica se o registro existe
        if ((pt_mov + i)->id_doc == id){
            // Confirma se o mesmo deve ser desabilitado
            printf("Deseja desativar(s/n)?");
            op = getchar(); fflush(stdin);
            // Se nao retorne para o menu principal
            if (op == 'n'){
                return;
            }
            else{
                // Se sim confirme a operacao
                (pt_mov + (id - 1))->status = 'n';
                return;
            }
        }
    }
}
// Fim da funcao para desabilitar um registro
// Inicio da funcao para habilitar um registro
void habilita_registro(int *idx, movimento *pt_mov){
    // Declara as variaveis do tipo inteiro e caractere
    int i, id;
    char op;
    // Limpa a tela
    system("CLS");
    // Desabilita o registro
    printf("\nHabilita Registro\n\n");
    // Solicita o documento a ser habilitado
    printf("Entre com o codigo do documento:");
    // Armazena o documento a ser habilitado
    scanf_s("%d", &id); fflush(stdin);
    // De zero ate o valor de idx incremente em uma unidade
    for (i = 0; i<(*idx); i++){
        // Verifica se o registro existe
        if ((pt_mov + i)->id_doc == id){
            // Confirma se o mesmo deve ser habilitado
            printf("Deseja ativar(s/n)?");
            op = getchar(); fflush(stdin);
            // Se nao retorne para o menu principal
            if (op == 'n'){
                return;
            }
            else{
                // Se sim confirme a operacao
                (pt_mov + (id - 1))->status = 's';
                return;
            }
        }
    }
}
// Fim da funcao para habilitar um registro
// Inicio da funcao para excluir um registro
void excluir_registro(int *idx, movimento *pt_mov){
    // Declara as variaveis do tipo inteiro e caractere
    int i, id;
    char op;
    // Limpa a tela
    system("CLS");
    // Desabilita o registro
    printf("\nExcluir Registro\n\n");
    // Solicita o documento a ser desabilitado
    printf("Entre com o codigo do documento:");
    // Armazena o documento a ser desabilitado
    scanf_s("%d", &id); fflush(stdin);
    // De zero ate o valor de idx incremente em uma unidade
    for (i = 0; i<(*idx); i++){
        // Verifica se o registro existe
        if ((pt_mov + i)->id_doc == id){
            // Confirma se o mesmo deve ser desabilitado
            printf("Deseja excluir(s/n)?");
            op = getchar(); fflush(stdin);
            // Se nao retorne para o menu principal
            if (op == 'n')
                return;
            // Se sim altere o status do registro para N de desabilitado
            else
            {
                // O que fazer para excluir o registro
            }
        }
    }
}
// Fim da funcao para excluir um registro
						
Format the question better, or put all the relevant source code on http://pastebin.com/
– Alexandre Borela
http://meta.pt.stackoverflow.com/q/4255/101
– Maniero