2012-06-24 154 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