質問

次のコードを考えてみましょう

// BOGP.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "gmp-static\gmp.h"
#include <stdlib.h>         /* For _MAX_PATH definition */
#include <stdio.h>
#include <malloc.h>


#define F(x) mpf_t x; mpf_init( x );

int main(int argc, char* argv[])
{
    F(foo);
    char * buff;
    mp_exp_t exp;

    mpf_init_set_str( foo, "123", 10 );
    buff = mpf_get_str(NULL, &exp, 10, 0, foo);
    puts( buff );
    puts("\n");
    free(buff); 

    mpf_init_set_str( foo, "-123", 10 );
    buff = mpf_get_str(NULL, &exp, 10, 0, foo);
    puts( buff );
    puts("\n");
    free(buff); 

    mpf_init_set_str( foo, "+123", 10 );
    buff = mpf_get_str(NULL, &exp, 10, 0, foo);
    puts( buff );
    puts("\n");
    free( buff );

}

最初のインスタンスでは、mpf_get_str 呼び出しの後、buff には「123」が含まれます。2番目のバフには「-123」が含まれています。しかし、3 番目の buff には空の文字列 ("") が含まれています。

これはGMP 4.2.4を使用しています。もう一度マニュアルを参照する必要があるかもしれませんが、先頭の「+」は先頭の「-」と同じくらい簡単に処理されると思いました。

役に立ちましたか?

解決

私の知る限り、あなたの問題はこの文書のどこにも言及されていません。 GMPマニュアル. 。ただし、コードを調べることはできます。 mpf_set_str 直接「+」を処理していないことを確認してください。

どのような状況でこれが必要になるかわかりませんが、正/負を示す文字が本当に必要な場合は、これらの関数が先頭の空白を無視するという事実を利用できるかもしれません。 " 123".

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top