私はC言語ではまったく新しく、2つの別個の構造体メンバ変数から文字列を比較する方法が不思議でした。多分私のコードを提供することは、私が求めていることを明確にするでしょう。C:構造体からの2つの文字列を比較する
私は、次の構造を有する:
typedef struct mentry {
char *surname;
int house_number;
char *postcode;
char *full_address;
} MEntry;
は、私は2つの別々のMEntry内の変数を比較したいです。私は両方のエントリの姓が同じかどうか確認したい。だから、私は次のメソッドを書いている:
int me_compare(MEntry *me1, MEntry *me2)
{
int surnameResult;
char me1Surname = *(me1->surname);
char me2Surname = *(me2->surname);
surnameResult = strcmp(me1Surname, me2Surname);
return surnameResult;
}
私は私のプログラムをコンパイルするとき、私は次のメッセージを得る:
char me1Surname = *(me1->surname);
:
mentry.c:30:6: warning: passing argument 1 of ‘strcmp’ makes pointer from integer without a cast [enabled by default]
surnameResult = strcmp(me1Surname, me2Surname);
は、その行を思考で私が間違っています
はme1Surnameを姓のアドレスではなく姓の値に設定しますか?
私はまた、別の警告が言ってます:この警告が表示された理由を
"In file included from mentry.c:2:0:
/usr/include/string.h:140:12:note: expected ‘const char *’ but argument is of type ‘char’
extern int strcmp (const char *__s1, const char *__s2)"
誰かが説明できますか?
変数 'me1Surname'と 'me2Surname'は*単一文字*です。実際の構造体メンバで 'strcmp'を呼び出してください。 –
お返事ありがとうございます。 'surnameResult = strcmp(*(me1-> surname)、*(me2-> surname)); ' – cgy95
逆参照演算子を使用しないでください。これは、ポインタが指している値を取得します。ポインターは単一の文字を指しているので、ポインターの逆参照によって1つの文字が得られます。 'strcmp'の呼び出しでアスタリスクを削除してください。 –