在C中搜索int *

时间:2019-03-04 09:54:28

标签: c

我是编程的新手,但是我想写代码是因为我可以搜索工作人员中的“图片”。但是此当前代码无法正常运行,因为我只想输入一张图片,然后程序崩溃。

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 :(得分:1)

您似乎正在使用字符串函数(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);
}

答案 1 :(得分:0)

函数strstr如下所示:

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

您致电:

if (strstr (int **pic1, int pic2) != NULL) {}