-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathutils.c
More file actions
62 lines (45 loc) · 1.26 KB
/
utils.c
File metadata and controls
62 lines (45 loc) · 1.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <string.h>
#include "utils.h"
char endsWith(char str[], char subStr[]) {
int lenSubStr = strlen(subStr);
int startStr = strlen(str) - lenSubStr;
if (startStr < 0) return 0;
int i;
for (i=0; i<lenSubStr; i++) if (str[startStr+i] != subStr[i]) return 0;
return 1;
}
char startsWith(char str[], char subStr[]) {
int lenSubStr = strlen(subStr);
if (lenSubStr > strlen(str)) return 0;
int i;
for (i=0; i<lenSubStr; i++) if (str[i] != subStr[i]) return 0;
return 1;
}
char hasInside(char str[], char subStr[]) {
int lenSubStr = strlen(subStr);
int lenStr = strlen(str);
if (lenSubStr > lenStr) return 0;
/* Con 'maxAvance' se calcula cuántos caracteres como máximo puede
haber antes de que aparezca dicha cadena. Obviamente, si hay
menos caracteres disponibles en la cadena principal que el
tamaño de la subcadena a buscar, significa que no se encuentra
en la principal. */
int i; int j=0;
int maxAvance = lenStr-lenSubStr;
for (i=0; (j>0) || (i<=maxAvance); ++i) {
if (str[i] == subStr[j]) {
++j;
} else {
j=0;
continue;
}
if (j == lenSubStr) return 1;
}
return 0;
}
char* nextChar(char str[], char a) {
char* tmp = str;
while ( ((*tmp) != a) && ((*tmp) != '\0') ) ++tmp;
if ( (*tmp) == '\0' ) return NULL;
return tmp;
}