● 関数リファレンス
代入式の計算(文字数指定)
int __stdcall StrCalc_substitution_n(PSTRCALC_PARAM prm,char *str,int len,int btemp,PPARAM_INFO pinf,int *px,int *py);
引数
引数名 | 意味 |
prm | STRCALC_PARAM 構造体の実体アドレス |
str | 計算対象の代入式を格納したバッファの先頭アドレス |
len | 計算対象の文字長(バイト数) |
btemp | 変数が新規登録される場合のテンポラリ属性付加フラグ |
pinf | PARAM_INFO 構造体の実体アドレス(NULL指定可) |
px | 一、二次元配列の場合、指定された横インデックスを格納する領域のアドレス(NULL指定可) |
py | 二次元配列の場合、指定された縦インデックスを格納する領域のアドレス(NULL指定可) |
戻り値
正常終了した時は STATUS_NORMAL を返します。
それ以外は状態コード を返します。また、メモリの確保に失敗した場合は STATUS_NOTENOUGHMEM を返します。
説明
str に格納された代入式を計算します。処理内容は関数 StrCalc_substitution と同じですが、str [0] 〜 str [len - 1] の範囲を計算対象とします。
範囲内にヌル文字がある場合は、その位置までを計算対象とします。
テスト.
#include <stdio.h>
#include <string.h>
#include "sc39.h"
void main(void)
{
STRCALC_PARAM prm;
int ret;
char *str = "param = 1+2+3+4+5X";
if (!StrCalc_init(&prm)){
printf("初期化エラー\n");
return;
}
/*
関数 StrCalc_substitution は末尾ヌルまでを対象とするので、
このデータではエラーになります。
*/
ret = StrCalc_substitution(
&prm,
str,
0,
NULL,NULL,NULL);
if (ret == STATUS_NORMAL)
printf("ans. : %.16G\n\n",prm.ans);
else
printf("error. %d\n\n",ret); /* STATUS_INVALID_RADIX(-18)を表示 */
/*
関数 StrCalc_substitution_n で最後の 'X' を除くように
指定します。
*/
ret = StrCalc_substitution_n(
&prm,
str,
strlen(str) - 1, /* 一文字分、少なく指定する */
0,
NULL,NULL,NULL);
if (ret == STATUS_NORMAL)
printf("ans. : %.16G\n",prm.ans); /* 15 を表示 */
else
printf("error. %d\n",ret);
StrCalc_term(&prm);
}