Scilab 5.3.3
- Scilab help
- call_scilab API (Scilab engine)
- Boolean management
- Complex management
- DisableInteractiveMode
- Double management
- GetLastJob
- ScilabHaveAGraph
- SendScilabJob
- SendScilabJobs
- StartScilab
- String management
- TerminateScilab
- call_scilab
- Compile and run with Call Scilab
- creadbmat (obsolete)
- creadchain (obsolete)
- creadcmat (obsolete)
- creadmat (obsolete)
- cwritebmat (obsolete)
- cwritechain (obsolete)
- cwritecmat (obsolete)
- cwritemat (obsolete)
- fromc
- fromjava
Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
However, this page did not exist in the previous stable version.
String management
How to manage Scilab's String read and write process using call_scilab and api_scilab
Description
This help describes how strings and matrix of strings can be handle through the Call Scilab API and api Scilab.
There are several functions which can be used to read / write from the memory of Scilab. These functions are described in dedicated pages.
Note: Access to variables is done through api Scilab (named variable).
Examples
// This example shows how to write a Scilab string in Scilab engine // It is the equivalent to A="my Message"; in Scilab interpretor // See: modules/call_scilab/examples/basicExamples/readwritestring.c // StartScilab int row = 1, col = 1; /* Size of the matrix */ /* Declare the string */ char **myMatrixOfString = (char**)malloc(sizeof(char*) * row * col); myMatrixOfString[0]="my Message"; char variableName[] = "A"; SciErr sciErr; /* Write it into Scilab's memory */ sciErr = createNamedMatrixOfString(pvApiCtx, variableName, row, col, myMatrixOfString); if(sciErr.iErr) { printError(&sciErr, 0); } /* * Prior to Scilab 5.2 * C2F(cwritechain)(variableName, &sizeOfMyString , myString, strlen(variableName), sizeOfMyString); */ printf("Display from Scilab of A:\n"); SendScilabJob("disp(A);"); /* Display A */
/* Load the previously set variable A */ // See: modules/call_scilab/examples/basicExamples/readwritestring.c char variableToBeRetrieved[]="A"; int iRows = 0; int iCols = 0; int i,j; int* piAddr = NULL; int* piLen = NULL; char** pstData = NULL; SciErr sciErr; //fisrt call to retrieve dimensions sciErr = readNamedMatrixOfString(pvApiCtx,variableToBeRetrieved,&iRows, &iCols, NULL, NULL); if(sciErr.iErr) { printError(&sciErr, 0); } piLen = (int*)malloc(sizeof(int) * iRows * iCols); //second call to retrieve length of each string sciErr = readNamedMatrixOfString(pvApiCtx,variableToBeRetrieved, &iRows, &iCols, piLen, NULL); if(sciErr.iErr) { printError(&sciErr, 0); } pstData = (char**)malloc(sizeof(char*) * iRows * iCols); for(i = 0 ; i < iRows * iCols ; i++) { pstData[i] = (char*)malloc(sizeof(char) * (piLen[i] + 1));//+ 1 for null termination } //third call to retrieve data sciErr = readNamedMatrixOfString(pvApiCtx, variableToBeRetrieved, &iRows, &iCols, piLen, pstData); if(sciErr.iErr) { printError(&sciErr, 0); } printf("\n"); printf("Load and display of A:\n"); for(j = 0 ; j < iCols ; j++) { for(i = 0 ; i < iRows ; i++) { /* Display the formated matrix with same scilab indice */ printf("[%d,%d] = %s\n",j+1,i+1,pstData[j* iRows + i]); } } printf("\n"); free(piLen); for(i = 0 ; i < iRows * iCols ; i++) { free(pstData[i]); } free(pstData);
See Also
- Call_Scilab — call_scilab is an interface which provides the ability to call Scilab engine from C/C++ code
- api Scilab — api_scilab is the Scilab interface to read/write data from/to Scilab memory
- cwritechain — Write a single string into Scilab memory using call_scilab. Starting with Scilab 5.2, this function is obsolete. See API_Scilab: String writing for remplacement.
- creadchain — Read a single string from Scilab memory using call_scilab. Starting with Scilab 5.2, this function is obsolete. See API_Scilab: String reading for remplacement.
- SendScilabJob — Send a Scilab task from a C/C++ code (call_scilab)
- StartScilab — Initializes and starts Scilab engine in Call Scilab
- Call_Scilab: Boolean Management — How to manage Scilab's boolean read and write process using call_scilab and api_scilab
- Call_Scilab: Double Management — How to manage Scilab's variable read and write process using call_scilab and api_scilab
- API_Scilab: Boolean Reading — How to read matrix of boolean.
- API_Scilab: Boolean Writing — How to write matrices of boolean.
- API_Scilab: Double Reading — How to read matrices of double in a gateway.
- API_Scilab: Double Writing — How to write matrices of doubles in a gateway.
- Complex Management — How to manage Scilab's complex variable read and write process using call_scilab
Authors
Sylvestre Ledru
<< StartScilab | call_scilab API (Scilab engine) | TerminateScilab >> |