私は演算子(+、 - 、/、*のいずれか)をユーザーに与えようとしています。彼/彼女はこれを行い確実にするために、私はこのコードを書いた:strcmp() - コードがコンパイルされても問題なく動作しているようです。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char operator;
printf("Enter operator: (+, -, *, /) \n");
do { scanf("%c", &operator); }
while ((strcmp(&operator, "+") != 0) || (strcmp(&operator, "-") != 0) || (strcmp(&operator, "*") != 0) || (strcmp(&operator, "/") != 0));
}
何が起こって終わると、ループは、私が正しい演算子を入力しても、延々と続くされます。どんな助けもありがとうございます。感謝:)
編集:(固定コード)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char operator;
printf("Enter operator: (+, -, *, /) \n");
do { scanf(" %c", &operator); }
while ((strcmp(&operator, "+") != 0) && (strcmp(&operator, "-") != 0) && (strcmp(&operator, "*") != 0) && (strcmp(&operator, "/") != 0));
}
'strcmp'がゼロで終了する文字列ではなく、文字を取る示唆しています。これは 'if(operator == '+')' –
@WeatherVaneのように簡単なことができます。あなたのコメントは答えに変換する価値があります。 –
私は、 'char'の内部表現が整数型であるという事実を利用することもできると思います。したがって、このような値を比較するために比較を簡素化することができます。' operator!= 42' –