我试图在C ++中比较2个值(我刚才这么说,请放轻松)
struct styles{
int itemNo;
char desc[26];
char brand[21]; //between 3 - 20
char category;
double cost;
};
上面声明的struct,然后我在另一个函数中使用这个代码
char cat[2];
for (x=0;x<size;x++)
{
if (strcmp(cat,styleAr[x].category)==0)
它在if语句中给出了'styleAr [x] .category'的错误: 类型“char”的参数与“const char *
类型的参数不兼容关于如何解决这个问题的任何解释都很棒
答案 0 :(得分:3)
您有category
作为单个char
而cat
是一个字符数组(即char *
)...您可能并不想比较一个带有单个字符的字符串
答案 1 :(得分:3)
假设cat
是一个字符串(即一个字符后跟一个'\0'
),那么你应该这样做:
if (cat[0] == styleAr[x].category)
但是,当然,如果你使用std::string cat
和std::string category
,你可以写:
if (cat == styleAr[x].category)
答案 2 :(得分:2)
strcmp
比较字符数组,但类别只是一个char
,因此错误。您可以使用==
直接比较两个字符
如果category应该是单个char,则需要更改比较代码
char cat='?';//or whatever you are looking for
for (x=0;x<size;x++)
{
if (cat == styleAr[x].category)
答案 3 :(得分:1)
您正在比较一个双字符数组(cat
),它不是任何值(至少不是您展示给我们的代码中)的一个字符串。
strcmp
函数接受两个类型为const char*
的参数,即两个以null结尾的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.
}
}