Scilab-Branch-6.1-GIT
- Scilab Help
- API Scilab
- legacy
- API Scilab
- Getting started with API_Scilab
- API common functions
- API double functions
- API string functions
- API boolean functions
- API integer functions
- API list-type functions
- API polynomial functions
- API pointer functions
- API cell functions
- API struct functions
- API handle functions
- API optional functions
- API types
Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
See the recommended documentation of this function
API string functions
This page lists all the functions to manipulate Scilab native objects containing strings
scilabVar
scilab_createStringMatrix
(
scilabEnv
env, int dim, const int* dims)
Create a string matrix with dim
dimensions (dims
[0], dims
[1], ..., dims
[dim
-1]).
scilabVar
scilab_createStringMatrix2d
(
scilabEnv
env, int row, int col)
Create an string matrix with 2 dimensions (row
, col
).
scilabStatus
scilab_getStringArray
(
scilabEnv
env,
scilabVar
var, wchar_t*** strs)
Get pointer on internal array of string of var
.
scilabStatus
scilab_getString
(
scilabEnv
env,
scilabVar
var, wchar_t** str)
Get string value from an scalar string variable.
scilabStatus
scilab_setStringArray
(
scilabEnv
env,
scilabVar
var, const wchar_t* const* strs)
Set values of string variable var
.
scilabStatus
scilab_setString
(
scilabEnv
env,
scilabVar
var, const wchar_t* str)
Set value of a scalar string variable var
.
Examples
#include <ctype.h> #include "api_scilab.h" #include "Scierror.h" #include "localization.h" #include "sciprint.h" #include "sci_malloc.h" #include "os_string.h" const char fname[] = "string_test"; int sci_string_test(scilabEnv env, int nin, scilabVar* in, int nopt, scilabOpt opt, int nout, scilabVar* out) { int i = 0; int inr1 = 0; int inc1 = 0; int size1 = 0; wchar_t** in1 = NULL; wchar_t* in2 = 0; int dim1 = 3; int dims1[] = {0, 0, 2}; wchar_t** out1 = NULL; wchar_t* out2; int len2 = 0; int diff = L'a' - L'A'; if (nin != 2) { Scierror(999, _("%s: Wrong number of input arguments: %d expected.\n"), fname, 2); return STATUS_ERROR; } if (nout != 2) { Scierror(999, _("%s: Wrong number of output arguments: %d expected.\n"), fname, 3); return STATUS_ERROR; } //in[0] : matrix 2d of string if (scilab_isString(env, in[0]) == 0 || scilab_isMatrix(env, in[0]) == 0) { Scierror(999, _("%s: Wrong type for input argument #%d: A string matrix expected.\n"), fname, 1); return STATUS_ERROR; } size1 = scilab_getDim2d(env, in[0], &inr1, &inc1); scilab_getStringArray(env, in[0], &in1); //in[1] : string if (scilab_isString(env, in[1]) == 0 || scilab_isScalar(env, in[1]) == 0) { Scierror(999, _("%s: Wrong type for input argument #%d: A double expected.\n"), fname, 2); return STATUS_ERROR; } scilab_getString(env, in[1], &in2); //out1 : matrix 2d of string with same size of in[0] dims1[0] = inr1; dims1[1] = inc1; out[0] = scilab_createStringMatrix(env, dim1, dims1); scilab_getStringArray(env, out[0], &out1); for (i = 0; i < size1; ++i) { wchar_t temp[128]; wcscpy(temp, in1[i]); wcscat(temp, L".one"); out1[i] = os_wcsdup(temp); wcscpy(temp, in1[i]); wcscat(temp, L".two"); out1[i + size1] = os_wcsdup(temp); } //out2 : string out2 = os_wcsdup(in2); len2 = wcslen(out2); for (i = 0; i < len2; ++i) { if (out2[i] >= L'a' && out2[i] <= L'z') { out2[i] = (out2[i] - 'a' + 26 - 1) % 26) + 'a'; } else if (out2[i] >= L'A' && out2[i] <= L'Z') { out2[i] = (out2[i] - 'A' + 26 - 1) % 26) + 'A'; } else { //no change } } out[1] = scilab_createString(env, out2); FREE(out2); return STATUS_OK; }
Scilab test script
mkdir(pathconvert(TMPDIR+"/api_c/")); cd(pathconvert(TMPDIR+"/api_c/")); copyfile(SCI+"/modules/api_scilab/tests/unit_tests/api_c/string_test.c",pathconvert(TMPDIR+"/api_c/string_test.c",%F)); ilib_build("libstring",["string_test","sci_string_test", "csci6"],"string_test.c",[],"","",""); exec("loader.sce"); in1 = ["one.one", "one.two", "one.three", "one.four"; "two.one", "two.two", "two.three", "two.four"; "three.one", "three.two", "three.three", "three.four"]; in2 = "IBM™"; [out1, out2] = string_test(in1, in2); ref(:,:,1) = in1 + ".one"; ref(:,:,2) = in1 + ".two"; assert_checkequal(out1, ref); assert_checkequal(out2, "HAL™");
Report an issue | ||
<< API double functions | API Scilab | API boolean functions >> |