比较C中的两个变量

时间:2012-06-24 01:04:54

标签: c pointers struct binaryfiles

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

基本上我所做的是:

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:

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

if((*k).id==p)

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