MADFROST
MADFROST

Reputation: 1723

How to check if value exists in struct or not?

I want to ask you guys, here my code cannot check is my value is exist or not in struct, I've input the value, but none of them enter the if else condition, can anyone help me?

#include <stdio.h>
    
int main(){
    int a,i;
    struct data {
        char nim[10];
    };
    
    struct data batas[100];
        
    printf("TEST1 : "); scanf("%[^\n]s", batas[0].nim);
    printf("TEST2 : "); scanf(" %[^\n]s", batas[1].nim);
    printf("TEST3 : "); scanf(" %[^\n]s", batas[3].nim);
        
    printf("TEST : "); scanf(" %[^\n]s", batas[a].nim);
    for(i=0; i<a; i++){
        if (batas[a].nim == batas[i].nim) {
            printf("Value exist");
        } else {
            printf("Value doesn't exist");
        }
    }
    return 0;
}

Upvotes: 1

Views: 1636

Answers (2)

MADFROST
MADFROST

Reputation: 1723

from what you give, it still can't enter the "Value exist" value. Here are my full line of code.

#include <stdio.h>
#include <string.h>

struct data {
    char nim[10];
};

struct data batas[100];
int a=0, b, c, d;
int i, j;
char x[20];

void inputdata()
{
  printf("\nInput Data\n");
  printf("=======================\n");
  printf("NIM : "); scanf("%s", batas[a].nim);
  for(i=0; i<a; i++){
    if (!strcmp(batas[a].nim, batas[i].nim)) {
      strcpy(x, "FLAG");
    } else {
      strcpy(x, "FLAGX");
    }
  }
  printf("%s", x);
  a++;
}

void showdata()
{
  j=0;
  for(i=0; i<a; i++){
    j = j + 1;
    printf("\nData-%i", j);
    printf("\nNIM : %s", batas[i].nim);
  }
}

int main() {
  int menu;
  do {
    printf("\nChoose input = "); scanf("%d", &menu);
    switch(menu)
    {
      case 1 : inputdata(); break;
      case 2 : showdata(); break;
    }
  }while (menu != 3);

  return 0;
}

Upvotes: 0

David Ranieri
David Ranieri

Reputation: 41017

You can not compare array of chars with the equal operator, instead:

if (strcmp(batas[a].nim, batas[i].nim) == 0)

or

if (!strcmp(batas[a].nim, batas[i].nim))

you need to #include <string.h>

Also, note that you are using a uninitialized.

Upvotes: 4

Related Questions