0

文字列から 2 つの整数を乗算した結果を計算するプログラムがあるとします。strtol を使用して最初の部分を分離していますが、2 番目の int を分離するにはどうすればよいですか? たとえば、「12 5」は 60 という結果になります。

今私のコードは次のようになります:

    int multiply(const char *input) {
        int result = 0;
        char *second_int;
        int i = strtol(input_line, &second_int, 10);

        result = i * second_int;

        return result;

したがって、文字列の最初の部分のみを整数に変換しただけなので、明らかに今はエラーになります。残りの文字列を整数に変換するにはどうすればよいですか? 別の strtol 行が必要ですか? キャストする必要がありますか?これについてどうすればよいかわかりません。

4

1 に答える 1

1

strtol宣言は次のとおりです。

long int strtol(const char *nptr, char **endptr, int base);

とからman strtol

endptr が NULL でない場合、strtol() は最初の無効な文字のアドレスを *endptr に格納します。

したがって、*endptr に格納されている値を使用して、別の値のスキャンを開始できます。例:

char *str="12 5";
char *end;
printf("%ld\n", strtol(str, &end, 10));
printf("%ld\n", strtol(end, &end, 10));

印刷されます:

12
5
于 2016-01-24T17:26:06.947 に答える