Поиск int * в C - PullRequest
       13

Поиск int * в C

0 голосов
/ 04 марта 2019

Я новичок в программировании, но я пытаюсь написать код, в котором я могу искать "картинки", которые есть у меня в штате.но этот текущий код не работает, так как я хотел бы, потому что я могу набрать только один рис, и тогда программа падает.

typedef struct staff {
    char id[12];
    int *pic;
    int imagecount;

} staff;

int main (void)
{
    int employeecount = 0;
    int pic = 0;
    int test[3] = { 1, 2, 3 };

    staff mystaff[100] = { {"111", test, 3}, {"222", test, 3} };

    employeecount = 2;

    printf ("type in a pic you would like to search after\n");
    scanf ("%d", &pic);
    for (int i = 0; i < employeecount; i++) {
        if (strstr (&mystaff[i].pic, pic)) {    //// here im guessing? 
            printf ("%s      ", mystaff[i].id);
            printf ("%d ", mystaff[i].pic);
        }
        printf ("\n");


        return 0;
    }
}

У кого-нибудь есть идеи, как это сделать?и да, это должно быть * pic, потому что это часть другой маленькой программы, которую я пытаюсь сделать.

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Функция strstr выглядит так:

char* strstr (const char* str1, const char* str2);

Звоните:

if (strstr (int **pic1, int pic2) != NULL) {}
0 голосов
/ 04 марта 2019

Вы, похоже, используете строковую функцию (strstr()) для поиска целых чисел, которая не будет работать.Вам нужно явно искать целое число:

bool staff_has_pic(const staff *s, const int pic)
{
  for (int i = 0; i < s->imagecount; ++i)
  {
    if (s->pic[i] == pic)
      return true;
  }
  return false;
}

, затем вызывать его из main() вместо strstr():

for (int i = 0; i < employeecount; i++)
{
    if (staff_has_pic(&mystaff[i], pic))
    {
        printf("%s has %d\n", mystaff[i].id);
    }
}

Кроме того, исправьте способ получения номера:

if (scanf(" %d", &pic) != 1)
{
  printf("**Failed to get picture number\n");
  exit(1);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...