● 関数リファレンス
数式文字列の計算(文字数指定)
int __stdcall StrCalc_n(PSTRCALC_PARAM prm,char *pstr,int 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);
}