Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Sohkra

C Como Zerar um Vetor String

Recommended Posts

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"

Editado por Simon Viegas
Olá! Favor ler tópico e seguir orientações sobre POSTAGEM DE CÓDIGOS: http://www.clubedohardware.com.br/announcement/27-poste-seus-c%C3%B3digos-corretamente/
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • 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

    Editado por Sohkra
    • Curtir 2

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    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

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    @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  .

    Editado por devair1010

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

    ×