- ベストアンサー
自作四則演算プログラムのエラー
- 自作の四則演算プログラムでエラーが発生しました。どこが間違っているのか教えてください。
- 足し算以外の演算子に対応するプログラムで指定された文字が正しくありません。
- 足し算の結果を計算するプログラムで計算結果が期待通りではありません。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
if(argv[1]!="+"||argv[1]!="-"||argv[1]!="*"||argv[1]!="/"||){ や if(argv[1]=="-"){ などが間違っています。 文字列を比較する場合には、strcmp()もしくはstrncmp()を使いましょう。 なぜ間違っているか...それはargv[1]が何を示しているかを考えればおのずと見えてくるはずです。
その他の回答 (4)
- KenKen07
- ベストアンサー率0% (0/1)
アドバイス程度で申し訳ないのですが・・・ 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されていないため使用できない可能性があります。 以上の点を変更すれば動作すると思います。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
argv[1]!="+" とかしている部分を *argv[1]!='+' とします。
- yosi_yosi
- ベストアンサー率35% (165/468)
#2です。 strcmpを使えないのであれば、自作の関数を作るか、それとも別の方法を取るかです。 渡される引数が1文字のみと分かっている場合でしたら、 char op; op = argv[1][0]; if( op=='+' || op=='-' || op=='*' || op=='/' ) { . . . で対応することが出来ます。
- nin2-y
- ベストアンサー率43% (14/32)
どんなエラーでしょうか? if(*argv[1]!='+'&&*argv[1]!='-'&&*argv[1]!='*'&&*argv[1]!='/'){ 忘れているなぁ、C、あっているんだろうか?
補足
ちなみに実行時は >ex10 * 2 3 と入力したいんです。 学習した範囲での関数しか使用できないので strcmp()は使えないです(゜O゜;