错误 C2664:show_info:无法将参数 2 从 'char [20]' 转换为"字符"

error C2664: show_info: cannot convert parameter 2 from 'char [20]' to 'char

本文关键字:char 转换 字符 info show C2664 参数 错误      更新时间:2023-10-16

我有一个小结构:

struct price
{
    char name[20];
    char shop[20];
    int pr;
    price *next;
};

一个不起作用的功能:

void show_info(price *&head, char cur)
{
    bool found = 0;
    price *temp = new price;
    temp->name = cur;
    for (price *i=head; i!=NULL; i=i->next)
        if (temp == i)
        {
            cout<< i->shop << i->pr;
            found = 1;
        }
        if (!found)
            cout << "The the good with such name is not found";
        delete temp;
 }

主文件:

int main()
{
    price *price_list=NULL;
    char inf[20];
    list_fill(price_list);
    cout << "Info about goods: ";
    show_list(price_list); //there is no problem
    cout <<"Input goods name you want to know about: ";
    cin >> inf;
    cout << "The info about good " << inf << show_info(price_list,inf)<<endl;
    system("pause");
    return 0;
}

我需要修复我的功能,这样它才能正常工作。

如前所述,错误为c2664。

void show_list(price *&head, char cur)

应该是

void show_list(price *&head, char cur[] )

当您通过inf时,即show_info(price_list,inf) 处的char [20]

PS:可能还有其他问题

按照以下方式重写函数

#include <cstring>
//...
void show_info( const price *head, const char *cur )
{
    bool found = false;
    const price *i = head;
    for ( ; i != NULL && !found; i = i->next )
    {
        found = strcmp( i->name, cur ) == 0;
    }
    if ( found )
    {
        cout<< i->shop << i->pr;
    }
    else
    {
        cout << "The the good with such name is not found";
    }
}