我是编程的新手,但是我想写代码是因为我可以搜索工作人员中的“图片”。但是此当前代码无法正常运行,因为我只想输入一张图片,然后程序崩溃。
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,因为这是我试图做的另一个小程序的一部分。
答案 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) {}