• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ソースプログラムのエラー)

自作四則演算プログラムのエラー

このQ&Aのポイント
  • 自作の四則演算プログラムでエラーが発生しました。どこが間違っているのか教えてください。
  • 足し算以外の演算子に対応するプログラムで指定された文字が正しくありません。
  • 足し算の結果を計算するプログラムで計算結果が期待通りではありません。

質問者が選んだベストアンサー

  • ベストアンサー
  • yosi_yosi
  • ベストアンサー率35% (165/468)
回答No.2

if(argv[1]!="+"||argv[1]!="-"||argv[1]!="*"||argv[1]!="/"||){ や if(argv[1]=="-"){ などが間違っています。 文字列を比較する場合には、strcmp()もしくはstrncmp()を使いましょう。 なぜ間違っているか...それはargv[1]が何を示しているかを考えればおのずと見えてくるはずです。

tarirari99
質問者

補足

ちなみに実行時は >ex10 * 2 3 と入力したいんです。 学習した範囲での関数しか使用できないので strcmp()は使えないです(゜O゜;

その他の回答 (4)

  • KenKen07
  • ベストアンサー率0% (0/1)
回答No.5

アドバイス程度で申し訳ないのですが・・・ if文ですが文字列「""」との比較は関数を使わなければなりません。 ですが、文字「''」比較では問題なくできます。 文字で比較する場合の注意事項としては main(int argc, char *argv[]) での引数*argv[]がポインタと配列が使われていることです。 現時点で使われているargv[1]はargv配列1番目のアドレスを比較しています。 ポインタの中の要素を取り出すにはどうすればいいのか、調べてみましょう。 if(argv[1]!="+"||argv[1]!="-"||argv[1]!="*"||argv[1]!="/"||) なのですが、もう一度見直してください。 何を入力しても全てif文の中に入りreturn-1が返ってしまうと思います。(一番最後の「||」も余分ですw) atoi関数ですが、必要なヘッダがincludeされていないため使用できない可能性があります。 以上の点を変更すれば動作すると思います。

参考URL:
http://www9.plala.or.jp/sgwr-t/
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

argv[1]!="+" とかしている部分を *argv[1]!='+' とします。

  • yosi_yosi
  • ベストアンサー率35% (165/468)
回答No.3

#2です。 strcmpを使えないのであれば、自作の関数を作るか、それとも別の方法を取るかです。 渡される引数が1文字のみと分かっている場合でしたら、 char op; op = argv[1][0]; if( op=='+' || op=='-' || op=='*' || op=='/' ) { . . . で対応することが出来ます。

  • nin2-y
  • ベストアンサー率43% (14/32)
回答No.1

どんなエラーでしょうか? if(*argv[1]!='+'&&*argv[1]!='-'&&*argv[1]!='*'&&*argv[1]!='/'){ 忘れているなぁ、C、あっているんだろうか?

関連するQ&A