0

我有一个名为 Product 的结构,其中有一个名为 prodname 的变量:

char prodname[30];

该结构的实例称为产品

我写了一个方法来检查用户输入的名字是否唯一。在这个方法中,我将用户输入的值传递给名为 checkprodname(char n[30]) 的方法

在主要方法中

if(checkprodname(prodName) == 0)
    {
        gotoxy(21,13);
        printf("The Product Name that you have entered already exists.");
        getch();
        addproduct();
        return 0;
    }

然后在此之后我有这行代码:

product.prodname = prodName;

为了将临时变量 prodName 中的值分配给实际的结构。当然,我会让他们继续将所有这些保存到文件中。但直到现在我得到一个错误,因为这是我得到的错误:

incompatible types when assigning to type char[30] from type char**

我已经对有效的 prodid 使用了相同的逻辑;但是,当使用字符串时,我不知道如何将值实际分配到实际结构中,因为我遇到了那个错误。

任何帮助,将不胜感激。

4

2 回答 2

1

如果您使用 C++,请考虑将 char 数组替换为 std::string。并不是说它有很大的不同,但 std::strings 通常更容易使用。(恕我直言)

于 2013-01-09T16:05:09.203 回答
0

您不能使用该符号在 C 中分配数组。对于字符串,使用strcpy(); 对于其他数组,使用memmove()or memcpy()。在所有情况下,请确保目标中有足够的空间来存储源中的内容。

通常,我希望写:

strcpy(product.prodname, prodName);

鉴于您收到的编译警告,您似乎需要使用:

strcpy(product.prodname, *prodName);

鉴于下面评论中的讨论,看来第一个替代方案毕竟是正确的,但我认为这意味着编译错误适用于不同的行,而不是显示的分配。

于 2013-01-09T15:32:57.423 回答