如何检查结构中是否存在值?

时间:2021-01-23 08:09:24

标签: arrays c validation struct

我想问你们,这里我的代码无法检查我的值是否存在于struct中,我输入了值,但没有人输入if else条件,有人可以帮我吗?

#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;
}

2 个答案:

答案 0 :(得分:4)

您不能将 char 数组与相等运算符进行比较,而是:

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

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

你需要#include <string.h>

另外,请注意您使用的是未初始化的 a

答案 1 :(得分:0)

从你给的情况来看,它仍然无法输入“值存在”的值。这是我的完整代码行。

#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;
}