このデータベースがあり、製品名が既にデータベースにあるかどうかを確認する必要があります。それ以外の場合は、ユーザーに別の名前を入力するように依頼します。
問題はこれです:
構造体内にある文字列 (製品名) とユーザーが入力した文字列を比較しようとしています。
構造体のコーディング、ユーザー入力部分、および検索方法は次のとおりです。
製品構造
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] ではマークされていない理由がわかりません。
簡単な説明をお願いします。
前もって感謝します
編集: 以下のいくつかでコードを修正した後: これは INPUT NAME OF PRODUCT セクションです。
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;
}