Ir ao conteúdo
  • Cadastre-se
88games16

C achar posicao nao preenchida de um vetor

Recommended Posts

struct Aluno{

       char nome[20];

       int idade;

};

 

int main(){

    struct Aluno cadastro[50];

    int i=0;

    while(cadastro != '\0'){

           i++;

}

 

 

tentei assim mas não funciona

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá todos!

 

 

Então, por razões que desconheço, a memória de variáveis automáticas quando declaradas em variáveis não é zerada sem que antes indiquemos que sejam zeradas, assim vale para vetores e para todos os tipos incluído estruturas.

 

Outra coisa muito importante, esse operador de desigualdade (!=) opera naturalmente com tipos primitivos (char, int, long ...), e não com tipos implementados pelo usuário, como é o caso de estruturas (struct).

 

Bem de um só vez para darmos cabo do problema que é comparar estruturas, opera-se os membros da estrutura individualmente por meio de uma expressão lógica, aninhando em cadeia, segundo a sua preferência.

Essa é apenas uma das formas de resolver, e a mais comum.

/** Exemplo do uso de operador binário na comparação dos membros da estrutura
    
    Autor: Ansic -> colaboração 88games16
    draft.c 25 ago 2018
*/


struct Aluno{
      char nome[20];
      int idade; };

#include <stdio.h> /**< as rotinas de entrada & saída. */
  
/** Função principal do programa em dialeto c. É a primeira rotina do sistema */ 
int main (int argc, const char *argv[]){
      struct Aluno cadastro[50] = {0}; /**< com apenas uma indicação de 0 zeramos
                                       todo o arranjo automático */

      int i =  0;
      int c =  0;
      /* primeiro se a string é vazia. segundo se o valor da idade está zerada ...
         ops!!! pessoas tem idade de valor: 0, então para este caso, nulo lógicamente
         é um cadastro sem nome.
      */
      while(i  <  50){
            if (cadastro[i].nome[0]  !=  '\0'){ c ++; }
            i ++; }

      printf ("o valor do contantor e: %u\n\n", c); /**< se todos os nomes são
                                                    vazios então o valor de c: 0 */
      return  0; }

 

 

Ok!? Tchau.

  • Curtir 2

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

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

×