Найдите индексы двух символов в структуре в C - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь найти и вернуть индексы, если один из NUM_PLUDATES - это любой из двух символов

Пока я сделал это, но смог найти только один.

#define NUM_PLUDATES 4

int getDateTypeIndex(plutype *plu, char datetype)
{
    unsigned int dateCounter;
    for(dateCounter = 0; dateCounter < NUM_PLUDATES; dateCounter++)
    {
        if (plu->rec.DATE[dateCounter][0] == datetype)
        {
             return dateCounter;
        }
    }
    return -1; // none found
}

Тогда я подумал сделать это:

int getDateTypesIndex(plutype *plu, char *datetypes)
{
    unsigned int i;
    int length = strlen(datetypes);
    for (i = 0;i < length;i++)
    {
        int idx = getDateTypeIndex(plu, datetypes[i]);
        if (idx != -1)
        {
            return idx;
        }
    }
    return -1; 
}

Но возвращает только первый символ. Например, он возвращает только 'C':

int index = getDateTypesIndex(plu, "CL");

Может ли кто-нибудь помочь мне получить оба символа. Спасибо.

Ответы [ 2 ]

0 голосов
/ 10 мая 2020

как в вашем коде, вы пишете

 int idx = getDateTypeIndex(plu, datetypes[i]);
        if (idx != -1)
        {
            return idx;
        }

, который вернет только первый индекс (нулевой индекс), поскольку оператор return сократит l oop и не будет продолжаться один раз, если условие истинно

0 голосов
/ 06 мая 2020

, когда вы это делаете:

if (idx != -1)
{
    return idx;
}

Вы возвращаетесь по первому найденному idx.

Вам нужно вернуть какой-то массив найденных индексов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...