Ir ao conteúdo

Posts recomendados

Postado

Ola pessoal, sou novo em programação C e estou com uma dificuldade, se possivel me ajudem pfv.

eu criei um programa com menu de opções, 1 - cadastrar funcionarios. 2 - pesquisar funcionarios. 3 - deletar cadastro.
o problema aparece justamente na opção 3, eu montei uma estrutura de cadastro dessa forma.

struct cadastros{
    int matricula;
    char nome[200];
    float salario;
    char setor;
    char funcao[50];
    };


(as outras opções estão funcionando como esperado, o problema é realmente na hora d deletar o cadastro)
não to conseguindo zerar as variáveis do cadastro.. ex.: matricula eu coloquei pra 0...salario também. mas quando chega em nome, setor e função, a coisa aperta porque quando ponho ={0} o DEV não compila e se ponho == ele não faz nada porque apenas compara e não muda de fato o q ta na variavel.

A questão é, tem algum comando para zerar um vetor string após ja ter salvo dados nele?


(sei q pode ser pergunta de novato, mas é realmente o que sou >.<)

exemplo do case de deleçao:case 3:

    printf("Digite o numero de matricula do usuario desejado\n");
    scanf("%d",&respostapes);
    int flag2=0;
    for(v=0;v<i;v++){
        if(respostapes==funcionario[v].matricula){
            funcionario[v].matricula={0};                          <------- nao ta funcionando
            funcionario[v].nome={0};                       <------- nao ta funcionando
            funcionario[v].salario={0};                     <------- nao ta funcionando
            funcionario[v].setor={0};                         <------- nao ta funcionando
            funcionario[v].funcao={0};                       <------- nao ta funcionando
            printf("Dados do Usuario \n");
            printf("Matricula: %d \n",funcionario[v].matricula);
            printf("Nome: %s\n",funcionario[v].nome);
            printf("Salario: %2.f \n",funcionario[v].salario);
            printf("Setor: %c \n",funcionario[v].setor);
            printf("Nome: %s\n",funcionario[v].funcao);    
            flag2=1;
            printf("cadastro deletado");
            contfun--;
            puts(" ");
            
            system("pause>>false");
        break;



ps.: ''o v e o i estão como variaveis gerais, ja declarei no inicio do algoritmo"

  • Curtir 1
Postado

Uma maneira é colocar o caractere nulo na primeira posição do vetor de caracteres, que é o caractere que indica onde a string acaba.

funcionario[v].nome[0] = '\0';
  • Curtir 2
Postado

ok vou tentar =D obrigado pela resposta

adicionado 13 minutos depois

funcionou , porém como faço agora pra limpar as variaveis d salario e matricula? to substituindo pra 0, mas tem como deixar em branco igual o '\0' fez com as de string? ja tentei ={0}; e nao ta indo.

segue um exemplo do resultado.

tem como limpar as variaveis d valor igualmente como o '\0' fez com as de string?

wdwawdwadwad.png

  • Curtir 2
Postado

Não, essas variáveis são números, e 0 é um número válido, logo sempre é impresso quando usa %d ou %f. Se quiser que não imprima nada quando o valor é zero precisará checar qual o valor da variável com um if e imprimir só a palavra se tiver valor 0.

  • Curtir 1
Postado

@Sohkra    se você quer é deletar o cadastro  então não precisa zerar nenhuma variável, você realmente deleta o cadastro no struct , para isso você procura pelo cadastro que você quer deletar e encontrando esse cadastro, você coloca um  loop  indo de onde encontrou o cadastro até o final dos cadastros, que é dado pelo valor do contador na hora de cadastrar,  esse contador vai aumentando a cada cadastro, então dentro desse loop você puxa os cadastros que estão acima dele  para baixo, fazendo isso até o final dos cadastros, e depois diminui 1 do valor do contador , pois foi deletado um cadastro.  então dentro do loop que faz a procura pelo cadastro você coloca um código parecido com esse :

for(j=i;j<contador;j++){
    funcionario[j] = funcionario[j+1];
}
printf("Cadastro Excluido Com Sucesso");
flag=1;
getch();
contador--;
break;

esse i é a variável do loop que faz a procura pelo cadastro  .

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...