0

char* buf[]印刷すると のようになり(-1.20112344x-2.13413423):2ます。intこの中の 2 つの sを抽出する必要があります。char* buf[]これらは の中に()あり、特殊文字 で区切られていxます。intは正または負の可能性があります(例として挙げたのは特定のケースです)。

UbuntuでGCCを使用してコンパイルしています。私がどのようにコンパイルしているかを考慮して、その方法を教えてください。

4

1 に答える 1

1

あなたの質問を正しく理解していれば、次のプログラムが役立つはずです (paxdiablo のコメントに従って編集 -タイプでdoubleはなく使用しfloat、結果を有効数字 8 桁に戻す)。

include <stdio.h>
int main(void) {
  char* s=" (-1.20112344x-2.13413423):2 ";
  double a, b;
  sscanf(s, " (%lfx%lf", &a, &b);
  printf("a is %.8lf; b is %.8lf\n", a, b);
}

実行すると、これが返されます

a is -1.20112344; b is -2.13413423

この関数は、指定された形式に従って数値の文字列をスキャンしますsscanf。この場合、形式文字列" (%lfx%lf"は次のようになります:つまり、結果を に入れます。 をスキップして、別の double を見つけて結果を に格納します。(%lf&aaxb

于 2013-06-18T02:18:55.117 に答える