Menu

[r246]: / LIBSTR.MPL  Maximize  Restore  History

Download this file

40 lines (31 with data), 1.1 kB

##LIBDYN,LIBCHR,LIBMEM

STRCPY=.SCPY.
STRCAT=.SADD.
STRFIX=.SFIX.
STRMID=.SMID.
STRDEL=.SDEL.
STRINS=.SINS.

STRLEN(S)%S
STRREV(S)MEMREV(S+1,%S)-1
STRDUP(S)STRCPY(MALLOC(%S+1),S)
STRUPR(D,S)MEMMOD(D+1,S+1,%D=%S,TOUPPER)-1
STRLWR(D,S)MEMMOD(D+1,S+1,%D=%S,TOLOWER)-1

/*
STRMID(D,S,SS,L) MEMMOVE(D+1,S+SS,%STRFIX(D,.IMIN(L,%S-SS+1)))-1
STRDEL(D,DD,L) [MEMMOVE(D+DD,D+DD+L,%STRFIX(D,%D-L)-DD+1);D]

STRINS(D,S,I) [
  MEMMOVE(D+I+%S,D+I,%D-I+1);
  MEMCPY(D+I,S+1,%S);
  STRFIX(D,%D+%S)
]
*/

ITOA(I,S;N)[N=<I?I=-I;%S=0;@[S%(%S+=1)=I\10+'0';I/=10];N?S%(%S+=1)='-';STRREV(S)]

VSPRINTF(S,F,P;FF,N%10)[
  FF=%S=0;FF<%F@(VAL.=F%++FF)<>'%'?S%(%S+=1)=VAL.:[VAL.=TOUPPER(F%++FF);
    ?'S'?STRCAT(S,!P):?'C'?S%(%S+=1)=!P:?'I'||?'D'?STRCAT(S,ITOA(!P,N$)):
    [S%(%S+=1)=VAL.;!P--];!P++];S]

SPRINTF(STR,FMT;ARGS!10)VSPRINTF(STR,FMT,ARGS$)
STRWHILE(S,SS,IS)[SS<=%S?IS(S%SS)@++SS;SS]
STRUNTIL(S,SS,IS)[SS<=%S?==IS(S%SS)@++SS;SS]
STRTOK(D,S,SS,IS;S1,S2)[S2=STRUNTIL(S,S1=STRWHILE(S,SS,IS),IS);STRMID(D,S,S1,S2-S1);S2]
STRARG(D,S,SS)STRTOK(D,S,SS,ISSPACE)

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.