0

我正在尝试比较 C++ 中的 2 个值(我是新手,所以请放轻松)

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)

它给了我 if 语句中的 'styleAr[x].category' 的错误: “char”类型的参数与“const char *”类型的参数不兼容

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

4

4 回答 4

3

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

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

但是当然,如​​果你使用std::string catand std::string category,你可以写:

if (cat == styleAr[x].category)
于 2013-08-14T12:17:03.467 回答
3

你有category一个单一的char并且cat是一个字符数组(即 a char *)......你可能不是想将一个字符串与单个字符进行比较

于 2013-08-14T12:16:30.930 回答
2

strcmp比较字符数组,但 category 只是一个char,因此错误。您可以直接使用比较两个字符== 如果类别应该是单个字符,则需要更改比较代码

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

for (x=0;x<size;x++)
{
    if (cat == styleAr[x].category)
于 2013-08-14T12:19:53.870 回答
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.
    }
}
于 2013-08-14T12:25:45.577 回答