2012-06-24 63 views
-2

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

基本上我做的是:

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; 
} 

我的目标是返回1当我把M1。

结构项目:

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

的问题是在这里:(*k).id==p),该值是绝不相同的,我100%肯定M1确实在.bin文件存在。

+0

(1)'而((的fread(K,1,的sizeof(项目)中,f))!= NULL){'的fread()不返回一个指针。 (2)'if((* k).id == p){'。这样做的速记是'如果(K-> ID == p)的',和(3)p是一个指针,所以你需要的strcmp()/ memcmp()对正如其他人说。 – wildplasser

回答

1

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

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

+0

哦,你是如此的正确!非常感谢你。 – DmitryK

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

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

+0

你,thx !!!得到它解决 – DmitryK