-2

我在比较两个变量时遇到了一些麻烦,希望有人能提供帮助。

基本上我所做的是:

printf("\n\n +* Introduza o %d Prato:", i + 1);

scanf("%s", &pratos_novo->prato);

ver=verifica_prato(pratos_novo->prato);
  if(ver == 1)
/*PROCESS*/

当被问到时,我放了 M1,因为它确实存在于 .bin 文件中

函数调用:

int verifica_prato(char* p) {

    k = (struct item*) malloc(sizeof(item));
        while((fread(k, 1, sizeof(item), f)) != NULL) {
            if((*k).id == p){
                fclose(f);
                return 1;
            }
        }
    fclose(f);
    return 0;
}

我的目标是在我放 M1 时返回 1。

结构项目:

struct item{
    char id[5];
    int ing[10];
    float qtd[10];
};

问题就在这里 : (*k).id==p),值永远不会相同,我 100% 确定 .bin 文件中确实存在 M1。

4

2 回答 2

1

当您需要比较字符串时,您正在比较指针。

替换if((*k).id==p)if( strcmp( (*k).id, p) == 0 )以比较字符串。

于 2012-06-24T01:12:56.423 回答
0
if((*k).id==p)

您只比较两个指针,使用strcmp函数比较两个字符串。

于 2012-06-24T01:12:41.683 回答