Code Fix

中級strcmpの戻り値を真偽値と勘違いして条件が逆になる › パターン1

strcmpの戻り値を真偽値と勘違いして条件が逆になる

strcmpは文字列が等しいときに0を返します。

 1  #include <stdio.h>
 2  #include <string.h>
 3  
 4  int main(void) {
 5      char name[] = "Taro";
 6      if (_________________________) {
                        ^
 7          printf("match\n");
 8      } else {
 9          printf("no match\n");
10      }
11      return 0;
12  }
出力: no match期待: match

空欄を埋めてコンパイル・実行を通す

広告
広告スロット(未設定)

strcmpの戻り値を真偽値と勘違いして条件が逆になる

if (strcmp(a, b))と書くと「等しくないとき」に真になり、多くの人が期待する「等しいとき」とは逆の分岐になります。

このエラーの解説と類題をまとめて見る →

広告
広告スロット(未設定)