У меня возникли проблемы с сопоставлением двух переменных, надеюсь, кто-то может помочь.Сравнение двух переменных в 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.
(1) 'while ((fread (k, 1, sizeof (item), f))! = NULL) {' fread() не возвращает указатель. (2) 'if ((* k) .id == p) {'. Сокращение для этого - 'if (k-> id == p)', и (3) p - указатель, поэтому вам понадобится strcmp()/memcmp(), как говорили другие. – wildplasser