我有一个名为Product的结构体,其中有一个名为prodname的变量:
char prodname[30];
结构的实例称为product
我写了一个方法来检查用户输入的名称是否唯一。在这个方法中,我将用户输入的值传递给名为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;
为了将temp变量prodName中的值赋值给实际的struct。当然我会继续将所有这些保存到文件中。但到目前为止我收到一个错误,因为这是我得到的错误:
incompatible types when assigning to type char[30] from type char**
我已经使用了相同的逻辑来起作用的prodid;但是在使用字符串时,我不知道如何实现将值实际分配到实际结构中,因为我收到了这个错误。
任何帮助都将不胜感激。
答案 0 :(得分:1)
如果您使用的是C ++,请考虑使用std :: string替换char数组。并不是说它有太大的区别,但std :: strings通常更容易使用。 (IMHO)
答案 1 :(得分:0)
您无法使用该表示法在C中分配数组。对于字符串,请使用strcpy()
;对于其他数组,请使用memmove()
或memcpy()
。在所有情况下,请确保目标中有足够的空间来存储源中的内容。
通常情况下,我希望写一下:
strcpy(product.prodname, prodName);
鉴于您收到的编译警告,您似乎需要使用:
strcpy(product.prodname, *prodName);
鉴于下面评论中的讨论,看来第一个替代方案毕竟是正确的,但我认为这意味着编译错误适用于不同的行,而不是显示的赋值。