我有这个数据库,我需要检查一个产品名称是否已经在数据库中,否则我要求用户输入另一个。
问题是这样的:
我正在尝试将结构内的字符串(产品名称)与用户输入的字符串进行比较。
结构体的编码、用户输入部分和搜索方法如下:
产品结构
typedef struct
{
char pName[100];
char pDescription [100];
float pPrice;
int pStock;
int pOrder;
}product;
checkProduct 方法:
int checkProduct (char nameCheck[100])
{
product temp;
p.pName = nameCheck;
rewind (pfp);
while (fread(&temp,STRUCTSIZE,1,pfp)==1)
{
if (strcmp (temp.pName,p.pName))
{
return 1;
}
}
return 0;
}
和用户输入部分[部分代码]:
char nameCheck[100];
gets (nameCheck);
checkProduct (nameCheck);
while (checkProduct == 1)
{
printf ("Product Already Exists!\n Enter another!\n");
while (getchar() !='\n')
{
continue;
}
}
p.pName = nameCheck;
现在我遇到以下错误(我使用 ECLIPSE):
在线时 (checkProduct == 1) [在用户输入中找到] 正在给我:“指针和整数之间的比较 - 默认启用”用黄色警告三角形标记
p.pName = nameCheck; 被标记为红十字并停止我的编译说:“从类型'char *'分配给类型'char [100]时不兼容的类型^----在用户输入和比较字符串时都给我带来麻烦.
有什么建议可以解决它,或者我可以如何尊重它?我不明白为什么在结构中 char pName 被标记为 '*' 而在 char[100] 中却不是。
请问有什么简要的解释吗?
先感谢您
编辑:用以下一些修改代码后:这是产品部分的输入名称;
char *nameCheck;
nameCheck = "";
fgets(nameCheck,sizeof nameCheck, stdin);
checkProduct (nameCheck);
int value = checkProduct (nameCheck);
while (value == 1)
{
printf ("Product Already Exists!\n Enter another!\n");
while (getchar() !='\n')
{
}
}
strcpy (p.pName, nameCheck);
这是新的 checkName 方法
int checkProduct (char *nameCheck)
{
product temp;
strcpy (p.pName, nameCheck);
rewind (pfp);
while (fread(&temp,STRUCTSIZE,1,pfp)==1)
{
if (strcmp (temp.pName,p.pName) == 0)
{
return 1;
}
}
return 0;
}