2017-06-27 13 views
-1

私の簡単な電卓プログラムでは助けが必要です。乗算に*シンボルを使用するまでは正常に動作しているようです。 *シンボルを使用すると、ASCII相当の42ではなく、99になります。引数は、整数、演算子(+-*/)と別の整数です。電卓プログラムでのASCII変換によるプログラミング

#include <stdio.h> 
#include <stdlib.h> 


/* 
void usage() { 
    printf("This is a calculator program, just put in to numbers and and operator\n"); 
    printf("Example:\n\t2 + 2\n"); 

} 
*/ 

int main(int argc, char *argv[]) { 

    int first_number, second_number; 
    int symbol; 
    int sum; 

    first_number = atoi(argv[1]); 
    second_number = atoi(argv[3]); 
    symbol = (int)*argv[2]; 


    printf("symbol varable = %d\n", symbol); // debugging for argv[2] 

    if (symbol == 43) { 

     sum = first_number + second_number; 

     printf("sum = %d\n", sum); 
    } 

    else if (symbol == 45) { 

     sum = first_number - second_number; 

     printf("sum = %d\n", sum); 
    } 

    else if (symbol == 42) { 

     sum = first_number * second_number; 

     printf("sum = %d\n", sum); 

    } 
    else if (symbol == 47) { 

     sum = first_number/second_number; 

     printf("sum = %d\n", sum); 
    } 
    return 0; 
} 
+2

それはあなたのことをクールですどのようにコードするのかを学んでいますが、私はあなたも[尋ねる方法](htt ps://stackoverflow.com/help/how-to-ask)。 –

+0

ちょっとしたヒント:ASCII値( '43 +'の代わりに '' + '')を使用する代わりに明示的な文字を使うと、コードが読みやすく移植性が向上します。 – e0k

+0

あなたの質問のタイトルは、あなたが求めている問題や質問を説明するものにしてください。このタイトルは、将来の読者が検索結果のリストに表示するのに役立つはずです。 *私の計算機で手伝ってください*絶対に無意味です。*いくつかの問題があります*単に無駄なノイズです、*(C言語)*タグから明らかです、あなたはアップ投票したり、(またはその両方)タイトルの中でそれを言わずにあなたを助けてください。ありがとう。 –

答えて

3

問題はあなたのコードとは関係ありません。

12 * 12のようなコマンドラインパラメータでプログラムを実行すると、コマンドラインにワイルドカードを挿入し、シェルは*を表示し、ディレクトリ内のすべてのファイル名のリストに置き換えます。シンボルは、それがこの答えのように完全にグロブあなたのコマンドライン12 '*' 12または12 \* 12のようなパラメータまたは無効にファイル名をエスケープ動作させるために99

で出てくる場合℃低いケースで始まる:Stop shell wildcard character expansion?

+1

したがって、 '*'は 'c'(' 99')の代わりに 'a'(' 97')で始まる名前に展開されるので、プログラムは 'a.out'と呼ばれません。私はあなたの診断の残りの部分に同意します。また、printf( "[%s] [%s] [%s] \ n"、argv [1]、argv [2]、argv [3]);を使って問題を診断することをお勧めします。コードは、引数を使用する前に 'if(argc <4)'もチェックする必要があります。 –

+1

私はa.outを使用しました。なぜなら、彼はそれが何が呼び出されたのかを言わなかったし、それがデフォルトです。しかし、あなたは正しいです - 最初のファイルがcで始まるためにはcalcや電卓などと呼ばれる必要があります。私はそれをより意味をなさせるように変更する必要がありますが、実行可能ファイルの名前を正しく推測すれば、本当に役に立ちます... –

+0

私はそれをどうやって行うのかという主な質問に私のコメントを見てください。 –