simulink と統合する C-MEX SFunction を開発しています。ここでの目的は、ASCIIコードの配列を2倍に変換することです。matlab を開く前に、Visual Studio を使用してテスト コードを実装しましたが、問題なく動作しました。 (下記参照)
#include "stdafx.h"
#include "stdlib.h"
#include <stdio.h>
#include <math.h>
#include <string.h>
int _tmain(int argc, _TCHAR* argv[])
{
double finalDouble;
size_t len = 1;
char* concatenation;
double character2 = 54; // 6 in ascii
double character1 = 46; // dot in ascii
double character0 = 51; // 3 in ascii
int character2_int = (int)(character2);
int character1_int = (int)(character1);
int character0_int = (int)(character0);
char buffer2[1];
char buffer1[1];
char buffer0[1];
sprintf(buffer2,"%c",character2_int);
sprintf(buffer1,"%c",character1_int);
sprintf(buffer0,"%c",character0_int);
concatenation = (char*)malloc(len+len+len);
strcpy(concatenation, buffer2); /* copy into the new var */
strcat(concatenation, buffer1); /* concatenate */
strcat(concatenation, buffer0); /* concatenate */
finalDouble = atof(concatenation); // final double must be 6.3
//y0[0] = finalDouble;
}
VisualStudio ですべてをテストした後、matlab の SFunction Builder にコピーしました。クラッシュはしませんが、malloc が期待どおりに動作していないようです。予想される出力は 6.3 (double) ですが、最後の桁の 3 (double) しか得られません。
何が起こっているか知っている人はいますか?何かアドバイスはありますか?