char* buf[]
印刷すると のようになり(-1.20112344x-2.13413423):2
ます。int
この中の 2 つの sを抽出する必要があります。char* buf[]
これらは の中に()
あり、特殊文字 で区切られていx
ます。int
は正または負の可能性があります(例として挙げたのは特定のケースです)。
UbuntuでGCCを使用してコンパイルしています。私がどのようにコンパイルしているかを考慮して、その方法を教えてください。
あなたの質問を正しく理解していれば、次のプログラムが役立つはずです (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
&a
a
x
b