Compare Strings with Struct Vector in C

2

I'm trying to do a search on a struct vector to return a list from the variable sex, but at the time of string comparison the list is not returned.

full code: PASTEBIN

    void consultar_registro()
    {
    struct pessoas p[5];


    int op2,i;
    char s[30];
    printf("\nEscolha como deseja buscar no registro: ");
    printf("\n1-Sexo\n2-Idade\n");
    scanf("%d",&op2);
    switch(op2)
    {
    case 1:
  //ERRO  
    printf("\nDigite o sexo que deseja buscar: ");
    scanf("%s",&s);

    for(i=0;i<5;i++)
    {
    if(strcmp(s,p[i].sexo)==0)
    {

    printf("\nNome: %s",p[i].nome);
    printf("\nSexo: %s",p[i].sexo);
    printf("\nIdade: %s",p[i].idade);

    }
    else
    {

     printf("\nNao foi encontrado\n");

    }

    }
    //ERRO
    break;

    case 2:
    printf("");
    break;

    default:
    printf("\nOpcao invalida");
    break;

    }
    
asked by anonymous 27.10.2018 / 23:19

1 answer

3

The way your program is written, the array of structures must be global.

...
...
struct pessoas p[5];
...
...
void consultar_registro()
{
  // struct pessoas p[5]; // <------
  int op2, i;
  char s[30];
  printf("\nEscolha como deseja buscar no registro: ");
  printf("\n1-Sexo\n2-Idade\n");
  scanf("%d", &op2);
  switch (op2)
  {
    case 1:
     //ERRO  
     printf("\nDigite o sexo que deseja buscar: ");
    scanf("%s",&s);

    for (i = 0; i < 5; i++)
    {
      if (strcmp(s,p[i].sexo) == 0)
      {
        printf("\nNome: %s",p[i].nome);
        printf("\nSexo: %s",p[i].sexo);
        printf("\nIdade: %s",p[i].idade);
      }
      else
      {
        printf("\nNao foi encontrado\n");
      }

    }
    //ERRO
    break;

  case 2:
    printf("");
    break;

  default:
    printf("\nOpcao invalida");
    break;
}
    
27.10.2018 / 23:29