структурированное программирование — сравнение символов в аргументе типа & quot; char & quot; несовместим с параметром типа & quot; const char *

Я пытаюсь сравнить 2 значения в C ++ (что я новичок, поэтому, пожалуйста, будьте проще)

struct styles{
int itemNo;
char desc[26];
char brand[21]; //between 3 - 20
char category;
double cost;
};

структура объявлена ​​выше, затем я использую этот код в другой функции

char cat[2];
for (x=0;x<size;x++)
{

if (strcmp(cat,styleAr[x].category)==0)

это дает мне ошибку с ‘styleAr [x] .category’ в операторе if:
аргумент типа «char» несовместим с параметром типа «const char *

любые объяснения о том, как я мог бы решить это было бы здорово

0

Решение

При условии, что cat является строкой (то есть один символ, за которым следует '\0'), то вы должны сделать это:

if (cat[0] == styleAr[x].category)

Но, конечно, если вы используете std::string cat а также std::string categoryВы можете просто написать:

if (cat == styleAr[x].category)
3

Другие решения

У тебя есть category как единый char а также cat это массив символов (то есть char *) … вы, вероятно, не хотели сравнивать строку с одним символом

3

strcmp сравнивает массивы символов, но категория только один charотсюда и ошибка. Вы можете сравнить два символа напрямую, используя ==
Если категория должна быть одним символом, вам нужно изменить код сравнения

char cat='?';//or whatever you are looking for

for (x=0;x<size;x++)
{
if (cat == styleAr[x].category)
2

Вы сравниваете массив из двух символов (cat), который НЕ инициализируется ни для какого значения (по крайней мере, в коде, который вы нам показали), для одного символа.

strcmp функция принимает два аргумента типа const char*, то есть две строки c-стиля с нулевым символом в конце (массив char, последний элемент которого является символом \ 0, нулевой символ).

Если вы хотите сравнить только один символ, используйте следующий код:

char cat = ; // Put the character you want to compare styleAr[x].category against there.

for (int x = 0 ; x < size; x++)
{
if (cat == styleAr[x].category)
{
// The two characters are equal.
}
}
1
По вопросам рекламы [email protected]