【发布时间】:2015-04-09 07:36:34
【问题描述】:
我必须编写一个函数,从给定数组中找到具有给定代码的产品。如果找到产品,则返回指向相应数组元素的指针。
我的主要问题是给定的代码应该首先被截断为七个字符,然后才与数组元素进行比较。
非常感谢您的帮助。
struct product *find_product(struct product_array *pa, const char *code)
{
char *temp;
int i = 0;
while (*code) {
temp[i] = (*code);
code++;
i++;
if (i == 7)
break;
}
temp[i] = '\0';
for (int j = 0; j < pa->count; j++)
if (pa->arr[j].code == temp[i])
return &(pa->arr[j]);
}
【问题讨论】:
-
我注意到的第一件事是
temp未初始化,您正在使用它,这将导致未定义的行为 -
您没有为
temp分配任何内存。使用malloc/calloc来做到这一点。你所说的“给定的代码应该首先被截断为七个字符”是什么意思? -
if (pa->arr[j].code == temp[i])与if (pa->arr[j].code == 0)相同。使用strcmp或strncmp比较两个字符串 -
可以使用
strncpy()将code的前7个字符复制到temp,不用自己写循环。