Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Français - Português - 日本語

Please note that the recommended version of Scilab is 6.0.0. This page might be outdated.
See the recommended documentation of this function

Справка Scilab >> API Scilab > Low level functions > String writing (Scilab gateway)

String writing (Scilab gateway)

How to write matrices of string in a gateway.

Calling Sequence

Input argument profile:

SciErr createMatrixOfString(void* _pvCtx, int _iVar, int _iRows, int _iCols, const char* const* _pstStrings)
SciErr createMatrixOfWideString(void* _pvCtx, int _iVar, int _iRows, int _iCols, const wchar_t* const* _pwstStrings)

Named variable profile:

SciErr createNamedMatrixOfString(void* _pvCtx, const char* _pstName, int _iRows, int _iCols, const char* const* _pstStrings)
SciErr createNamedMatrixOfWideString(void* _pvCtx, const char* _pstName, int _iRows, int _iCols, const wchar_t* const* _pwstStrings)



Scilab environment pointer, pass in "pvApiCtx" provided by api_scilab.h.


Position in the Scilab memory where you want to put the variable


Name of the variable for "named" functions.


Number of rows of the new variable


Numbers of columns of the new variable


Address of array of char* (size: _iCols * _iRows)


Error structure where is stored errors messages history and first error number.


This help describes how matrix of strings can be handled through the Scilab API.

Gateway Source

#include "api_scilab.h"
int write_string(char *fname,unsigned long fname_len)
	SciErr sciErr;
	//variable info : matrix of string 2 x 3
	int iRows		= 2;
	int iCols		= 3;
	char** pstData	= NULL;
	//data to put in the new variable
	char string11[]	= "may";
	char string21[]	= "be";
	char string12[]	= "the";
	char string22[]	= "with";
	char string13[]	= "puffin";
	char string23[]	= "you";
	//alloc new array
	pstData			= (char**)malloc(sizeof(char*) * iRows * iCols);
	//copy data address to the "main" array
	pstData[0]		= string11;
	pstData[1]		= string21;
	pstData[2]		= string12;
	pstData[3]		= string22;
	pstData[4]		= string13;
	pstData[5]		= string23;

	//create the variable
	sciErr = createMatrixOfString(pvApiCtx, nbInputArgument(pvApiCtx) + 1, iRows, iCols, pstData);
		printError(&sciErr, 0);
		return 0;

	//free container
	//assign allocated variables to Lhs position
    AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(pvApiCtx) + 1;
	return 0;

Scilab test script

a_ref = "may the puffin be with you ";
b = [];
a = write_string();
for i=1:size(a,"r")
    for j=1:size(a,"c")
        b = b + a(i,j);
        b = b + " ";
if b <> a_ref then error("failed"), end
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Thu Oct 02 14:01:18 CEST 2014