struct smt{
char *c;
};
int main(){
char *w="astring";
if(smt->c == w[0])
...do something
}
ifとexaclyが引き起こす警告を修正するにはどうすればよいですか?警告:ポインタと整数の比較
struct smt{
char *c;
};
int main(){
char *w="astring";
if(smt->c == w[0])
...do something
}
ifとexaclyが引き起こす警告を修正するにはどうすればよいですか?警告:ポインタと整数の比較
エラーは、しばしば(ほとんどの場合)、は、にはアドレス(ポインタ)と文字を比較したくないという事実に由来します。
あなたは、char '' とのchar * cを比較しています。何がやりたいことはこれである私は信じている:
struct smt{
char *c;
};
int main(){
char *w="astring";
// Here smt->c returns a char*
// w[0] gets you the first character, so 'a'
if(strcmp(smt->c, w) == 0)
...do something
}
あなたは両方の文字列の最初の文字を比較したい場合は、「> C
警告があなたのために現れるsmt-する[0]
を追加する必要があります(この比較のために暗黙的にint
にキャストされることを)文字ですw[0]
に、char*
あるsmt->c
を、比較再。
おそらく、このような最初の文字の比較意味:あなたは完全な文字列を比較したい場合は、
if(strcmp(smt->c, w) == 0) { ... }
またはより良いを使用
if(smt->c[0] == w[0]) { ... }
を、あなたは最大の長さを知っていればstrncmpを使用文字列に含めることができます。
エラーメッセージを読んで、あなたが理解しておく必要があり、あなたの ''([0]ワットsmt-> C ==)場合を読む:P – Nathan