文字ポインターを反復処理し、ポインターがヌルターミネーターに到達したことを確認すると、エラーが発生します。
const char* message = "hi";
//I then loop through the message and I get an error in the below if statement.
if (*message == "\0") {
...//do something
}
私が得ているエラーは次のとおりです。
warning: comparison between pointer and integer
('int' and 'char *')
*
はmessage
の前にあるため、メッセージを逆参照するので、messageが指す場所の値を取得できますか?ところで、ライブラリ関数strcmp
を使いたくありません。
そのはず
if (*message == '\0')
Cでは、単一引用符は単一文字を区切りますが、二重引用符は文字列用です。
これ:"\0"
は文字ではなく文字です。文字は、'\0'
のような単一引用符を使用します。
この行では...
if (*message == "\0") {
...警告でわかるように...
警告:ポインターと整数の比較 ( 'int'と 'char *')
...実際にint
をchar *
と比較しています。具体的には、int
とchar
へのアドレスを比較しています。
これを修正するには、次のいずれかを使用します。
if(*message == '\0') ...
if(message[0] == '\0') ...
if(!*message) ...
補足説明として、文字列を比較する場合は、string.h
にあるstrcmp
またはstrncmp
を使用する必要があります。