यहाँ स्ट्रिंग्स की एक सरणी के माध्यम से लूप करने का मेरा प्रयास है।

मैंने आईडी की एक सरणी बनाई, प्रत्येक आईडी की तुलना एक वोटर आईडी से की, जिसे कंसोल से पढ़ा जा रहा है।

// helper function
int verifyVoterID(char *uidDB[], char *voterID)
{
  for (int i = 0; i < sizeof(uidDB[0]); i++)
  {
    if (uidDB[0][i] == voterID)
      return 0;
  }
  return 1;
}

int main()
{
  char *uidDB[] = {"001", "002", "003"}, *voterID;
  
  printf("\n\nEnter ID: ");
  scanf("%s", voterID);

  // Verify voter's ID
  if (voterID)
    verifyVoterID(uidDB, voterID) == 0 
    ? doSomthing() 
    : doSomethingElse();

  return 0;
}

आउटपुट:

./03.c: In function 'verifyVoterID':
./03.c:19:21: warning: comparison between pointer and integer
   19 |     if (uidDB[0][i] == voterID)
      |

मैंने तुलना करने के लिए strcmp() का उपयोग करने का भी प्रयास किया है

int verifyVoterID(char *uidDB[], char *voterID)
{
  for (int i = 0; i < sizeof(uidDB[0]); i++)
  {
    if (strcmp(uidDB[0][i], voterID) == 0)
      return 0;
  }
  return 1;
}

आउटपुट:

./03.c: In function 'verifyVoterID':
./03.c:19:24: warning: passing argument 1 of 'strcmp' makes pointer from integer without a cast [-Wint-conversion]
   19 |     if (strcmp(uidDB[0][i], voterID) == 0)
      |                ~~~~~~~~^~~
      |                        |
      |                        char

मुझे किसकी याद आ रही है ?

0
Ismail 14 अगस्त 2020, 03:31

1 उत्तर

सबसे बढ़िया उत्तर

मेरे दृष्टिकोण में संशोधित करने के लिए कई चीजें हैं और मैं कुछ टिप्पणियों के साथ निम्नलिखित कोड पोस्ट कर रहा हूं। मैं आशान्वित हूं कि इससे आपको सहायता मिलेगी। इसका परीक्षण वीएस2019 पर किया गया था।

// return 0 if uidDB[i]==voterID, -1 if no match found
// I added const keyword since we're not going to change uidDB or voiterID in the function(read-only)
int verifyVoterID(const char* uidDB[], int uidLen, const char* voterID)
{
    for (int i = 0; i < uidLen; ++i)
    {
        if (!strcmp(uidDB[i], voterID)) // same as strcmp()==0.
            return 0;
    }
    return (-1);
}

int main(void)
{
    char voterID[8];    // NOT char* voterID;
    printf("\n\nEnter ID: ");
    scanf("%3s", voterID);  // read 3 characters only.

    const char* uidDB[] = { "001", "002", "003" };  // must be array of const char*
    const int uidDBLen = (sizeof(uidDB) / sizeof(uidDB[0])); // practical way to cal. size of array
    int verify_res = verifyVoterID(uidDB, uidDBLen, voterID);   // always pass the size of array together with the array

    if (verify_res == 0)
        doSomething();  // verify success
    else
        doSomethingElse(); // fail

    return 0;
}
3
John Park 18 अगस्त 2020, 14:09