Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
5.3.3 - Português

Change language to:
English - Français - 日本語 -

Please note that the recommended version of Scilab is 2024.0.0. This page might be outdated.
However, this page did not exist in the previous stable version.

Ajuda Scilab >> API Scilab > string > string example

string example

String use case.

Description

This example shows how to get a string variable and return it to Scilab.

Gateway Source

int stringExample(char *fname,unsigned long fname_len)
{
	SciErr sciErr;
	int* piAddr = NULL;
	int iType   = 0;
	int iRet    = 0;

	CheckRhs(1,1);
	CheckLhs(0,1);

	sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
	if(sciErr.iErr)
	{
		printError(&sciErr, 0);
		return 0;
	}

	if(isStringType(pvApiCtx, piAddr))
	{
		if(isScalar(pvApiCtx, piAddr))
		{
			char* pstData = NULL;

			iRet = getAllocatedSingleString(pvApiCtx, piAddr, &pstData);
			if(iRet)
			{
				freeAllocatedSingleString(pstData);
				return iRet;
			}

			iRet = createSingleString(pvApiCtx, Rhs + 1, pstData);
			if(iRet)
			{
				freeAllocatedSingleString(pstData);
				return iRet;
			}
			freeAllocatedSingleString(pstData);
		}
		else
		{
			int iRows       = 0;
			int iCols       = 0;
			char** pstData  = NULL;

			iRet = getAllocatedMatrixOfString(pvApiCtx, piAddr, &iRows, &iCols, &pstData);
			if(iRet)
			{
				freeAllocatedMatrixOfString(iRows, iCols, pstData);
				return iRet;
			}

			sciErr = createMatrixOfString(pvApiCtx, Rhs + 1, iRows, iCols, pstData);
			if(sciErr.iErr)
			{
				freeAllocatedMatrixOfString(iRows, iCols, pstData);
				printError(&sciErr, 0);
				return sciErr.iErr;
			}
			freeAllocatedMatrixOfString(iRows, iCols, pstData);
		}

		LhsVar(1) = Rhs + 1;
	}
	else
	{
		LhsVar(1) = 0;
	}
	return 0;
}

Scilab test script

a = "Scilab";
b = ["New","Scilab";"API","functions"];
if stringExample(a) <> a then pause, end
if stringExample(b) <> b then pause, end
<< freeAllocatedMatrixOfString string api_scilab >>

Copyright (c) 2022-2023 (Dassault Systèmes)
Copyright (c) 2017-2022 (ESI Group)
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Wed Oct 05 12:11:55 CEST 2011