我在比较两个变量时遇到了一些麻烦,希望有人可以提供帮助。
基本上我所做的是:
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。
答案 0 :(得分:1)
当您需要比较字符串时,您正在比较指针。
将if((*k).id==p)
替换为if( strcmp( (*k).id, p) == 0 )
以比较字符串。
答案 1 :(得分:0)
if((*k).id==p)
您只是比较两个指针,使用strcmp
函数来比较两个字符串。