str_seek
This commit is contained in:
68
src/cstr.c
68
src/cstr.c
@@ -50,71 +50,3 @@ char* NULLABLE(vsprintf_malloc)(size_t buffer_size, cstr format, va_list argv){
|
||||
}
|
||||
return buf;
|
||||
}
|
||||
|
||||
i32 cstr_seek(const char* src, const char* fragment, u32 startIndex, u32 seekLength){
|
||||
char sc = *src, fc = *fragment;
|
||||
if(sc == 0 || fc == 0)
|
||||
return -1;
|
||||
u32 fr_start = startIndex;
|
||||
for(u32 si = startIndex; si-startIndex < seekLength && sc != 0; si++){
|
||||
sc = src[si];
|
||||
fc = fragment[si-fr_start];
|
||||
if(fc == 0)
|
||||
return fr_start;
|
||||
if(sc != fc)
|
||||
fr_start++;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
i32 cstr_seekReverse(const char* src, const char* fragment, u32 startIndex, u32 seekLength){
|
||||
char sc = *src, fc = *fragment;
|
||||
if(sc == 0 || fc == 0)
|
||||
return -1;
|
||||
i32 len = strlen(src);
|
||||
if(startIndex == (u32)-1)
|
||||
startIndex = len-1;
|
||||
u32 fr_len = strlen(fragment);
|
||||
for(u32 si = startIndex; si < (u32)-1 && si != (len - seekLength - 1); si--){
|
||||
if(si + 1 < fr_len)
|
||||
return -1;
|
||||
sc = src[si];
|
||||
fc = fragment[0];
|
||||
u32 fr_start = si;
|
||||
for(u32 fi = 0; fc == sc ; fi++){
|
||||
if(fi == fr_len)
|
||||
return fr_start;
|
||||
fc = fragment[fi];
|
||||
sc = src[si--];
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
i32 cstr_seekChar(const char* src, char fragment, u32 startIndex, u32 seekLength){
|
||||
char sc=*src;
|
||||
if(sc==0 || fragment==0)
|
||||
return -1;
|
||||
for(u32 si=startIndex; si-startIndex<seekLength && sc!=0; si++){
|
||||
sc=src[si];
|
||||
if(sc==fragment)
|
||||
return si;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
i32 cstr_seekCharReverse(const char* src, char fragment, u32 startIndex, u32 seekLength){
|
||||
char sc=*src;
|
||||
if(sc==0 || fragment==0)
|
||||
return -1;
|
||||
i32 len=strlen(src);
|
||||
if(startIndex==(u32)-1)
|
||||
startIndex=len-1;
|
||||
for(u32 si=startIndex; si<(u32)-1 && si!=len-1-seekLength; si--){
|
||||
sc=src[si];
|
||||
if(sc==fragment)
|
||||
return si;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user