1

これが私の問題です: +x または *x の 2 種類のフレーズのいずれかを読み取らなければならず、それから読み取った操作を使用する必要があります。たとえば、私が計算したいくつかの平均値があるとしましょう。次に +3 を読み取ると、平均値は +3 になり、プラスの部分を実行できた * 関数と同じになります。これが私の本当に醜い (しかし機能している)そのためのコード:

char c=0;
char tempchar=0;
char sign=0;
printf("enter a character\n");
while (c!= '\n' && c!=EOF)
{
    tempchar=c;
    c = getchar();
    if (c=='+' || c=='*')
        sign = c;
    if (c=='\n' || c==EOF)
    {
        c=tempchar;
        break;
    }
}
if (sign == '+')
    avg = avg + (c-'0');

したがって、+ 1 が機能します。しかし、* オプションの場合、入力した最後の文字のみを取得します (たとえば、*1.2 を入力すると * と 2 が取得されます) ので、* と整数を取得するにはどうすればよいでしょうか?

ありがとう!

4

1 に答える 1

1

浮動小数点数をサポートしたいので、 を作成avgfloat、 で入力文字列を取得しfgets、 で解析しsscanfます。

#import <stdio.h>
#define MAXBUFFER 64

//... 

float value;
char input[MAXBUFFER];

fgets(input, sizeof(input), stdin);

if (sscanf(input, "+ %f", &value) == 1) avg += value;
if (sscanf(input, "* %f", &value) == 1) avg *= value;

//...
于 2013-05-09T00:41:25.610 に答える