Some string functions for basic string operations (not included in C-script, converted by me from other language)
Code:
string TempStringPad; //Temp string for padding
string* TempStringPtr; //Temp string pointer for 'type casting'
string* TempCharPtr; //Temp string pointer for 'type casting'
function str_sub(s,pos,len){ //returns ptr to substring of string s from pos to pos+len
TempStringPtr=s; //this func isn't modifying original string
str_cpy(TempStringPad, TempStringPtr);
if (pos > str_len(TempStringPad)) {
pos=str_len(TempStringPad);
}
if ((str_len(TempStringPad)-len-pos)<0) {
len=str_len(TempStringPad)-pos;
}
str_clip(TempStringPad,pos);
str_trunc(TempStringPad,str_len(TempStringPad)-len);
TempStringPtr=TempStringPad;
return(TempStringPtr);
}
function str_padl(Src, C, Lg){ //pad string src with cahr C from left
TempStringPtr = Src; //this func is modifying original string
TempCharPtr = C;
str_cpy(TempStringPad, "");
while ((str_len(TempStringPtr)+str_len(TempStringPad)) < Lg) {
str_cat(TempStringPad, TempCharPtr);
}
str_cat(TempStringPad, TempStringPtr);
str_cpy(TempStringPtr, TempStringPad);
return(TempStringPtr);
}
function str_padr(Src, C, Lg){ //pad string src with char C from right
TempStringPtr = Src; //this func is modifying original string
TempCharPtr = C;
while (str_len(TempStringPtr) < Lg) {
str_cat(TempStringPtr, TempCharPtr);
}
return(TempStringPtr);
}
function str_padc(Src, C, Lg){ //pad string src with char C from both sides
TempStringPtr = Src; //this func is modifying original string
TempCharPtr = C;
while str_len(TempStringPtr) < Lg {
str_cat(TempStringPtr, TempCharPtr);
if str_len(TempStringPtr) < Lg {
str_cpy(TempStringPad, TempCharPtr);
str_cat(TempStringPad, TempStringPtr);
str_cpy(TempStringPtr, TempStringPad);
}
}
return(TempStringPtr);
}
Usage example:
Code:
string RString;
...
str_cpy(RString,"01234567890123456789");
str_cpy(RString,str_sub(RString, 10, 3)); // RString="012"
...
str_cpy(RString,"01234567890123456789");
str_cpy(RString,str_sub(RString, 21, 20)); // RString=""
...
str_cpy(RString,"0123456789\n");
str_padr(RString,"_",20); //don't try to use "___" or "" in second parameter !!!
str_cat(RString,"0"); //second line has 0 aligned with "_" to 9 position of first line
...
str_cpy(RString,"0\n");
str_padl(RString,"_",11); //don't try to use "___" or "" in second parameter !!!
str_cat(RString,"0123456789"); //first line has 0 aligned with "_" to 9 position of second line
...
str_cpy(RString,"0\n");
str_padc(RString, "_",20); //don't try to use "___" or "" in second parameter !!!
str_cat(RString,"0"); //two lines has 0s aligned at right with "_"
...