中級 › 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は文字列が等しいときに0を返します。0はCでは偽なので、if(strcmp(...))とだけ書くと「一致しない」ときに真になってしまいます。等しいか調べたいときは== 0を付けます。
次の問題