比较C ++中的字符 - “char”类型的参数与“const char *”类型的参数不兼容

时间:2013-08-14 12:13:18

标签: c++ structured-programming

我试图在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 *

类型的参数不兼容

关于如何解决这个问题的任何解释都很棒

4 个答案:

答案 0 :(得分:3)

您有category作为单个charcat是一个字符数组(即char *)...您可能并不想比较一个带有单个字符的字符串

答案 1 :(得分:3)

假设cat是一个字符串(即一个字符后跟一个'\0'),那么你应该这样做:

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

但是,当然,如果你使用std::string catstd::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.
    }
}