● 関数リファレンス

数式文字列の計算(文字数指定)

    int __stdcall   StrCalc_n(PSTRCALC_PARAM prm,char *pstr,int len);

引数

引数名意味
prmSTRCALC_PARAM 構造体の実体アドレス
pstr計算対象を格納したバッファの先頭アドレス
len計算対象の文字長(バイト数)

戻り値

正常終了した時は STATUS_NORMAL を返します。
それ以外は状態コード を返します。また、メモリの確保に失敗した場合は STATUS_NOTENOUGHMEM を返します。

説明

文字列の式を計算します。処理内容は関数 StrCalc と同じですが、計算対象の文字列は引数 pstr へ指定し、len へ文字数を指定します。
prm が指す STRCALC_PARAM 構造体のメンバ str は無視されます。

計算は pstr [0] 〜 pstr [len - 1] の範囲を対象としますが、範囲内にヌル文字がある場合は、その位置までを計算対象とします。


テスト.

#include <stdio.h>
#include "sc39.h"

void    main(void)
{
    STRCALC_PARAM   prm;
    int             ret;
    char            *str = "1+2+3+4+5Z";

    if (!StrCalc_init(&prm)){
        printf("初期化エラー\n");
        return;
    }

    /*
      関数 StrCalc は末尾ヌルまでを対象とするので、
      このデータではエラーになります。
    */
    prm.str = str;
    if ((ret = StrCalc(&prm)) == STATUS_NORMAL)
        printf("ans. : %.16G\n\n",prm.ans);
    else
        printf("error. %d\n\n",ret); /* STATUS_INVALID_RADIX(-18)を表示 */

    /*
      関数 StrCalc_n で最後の 'Z' を除くように
      指定します。
    */
    if ((ret = StrCalc_n(&prm,str,9)) == STATUS_NORMAL)
        printf("ans. : %.16G\n",prm.ans); /* 15 を表示 */
    else
        printf("error. %d\n",ret);

    StrCalc_term(&prm);
}