String parsing function rework

pull/62/head
parent 8e390d04a1
commit 6dc10bafc8

@ -673,6 +673,33 @@ char *yon_char_replace(char *source, char *find, char*replace){
return source;
}
/**yon_char_parse(char *parameters, int *size, char *divider)
* [EN]
* Parses string [parameters], divided by [divider],
* then returns parsed string array and sets [size] to
* size of returned array
*/
// char **yon_char_parse(char *parameters, int *size, char *divider){
// char **string=NULL;
// int i=1;
// string=malloc(sizeof(char*));
// char *paramline=yon_char_new(parameters);
// char *param;
// while ((param=yon_char_divide_search(paramline,divider,1))){
// string=realloc(string,sizeof(char*)*i);
// string[i-1]=yon_char_new(param);
// i++;
// if (strcmp(param,paramline)==0) break;
// }
// // string=realloc(string,sizeof(char*)*i);
// // string[i-1]=yon_char_new(paramline);
// // i++;
// // printf("%d\n",i);
// *size=i-1;
// return string;
// }
/**yon_char_parse(char *parameters, int *size, char *divider)
* [EN]
* Parses string [parameters], divided by [divider],
@ -681,23 +708,20 @@ char *yon_char_replace(char *source, char *find, char*replace){
*/
char **yon_char_parse(char *parameters, int *size, char *divider){
char **string=NULL;
int i=1;
string=malloc(sizeof(char*));
*size=0;
char *paramline=yon_char_new(parameters);
char *param;
while ((param=yon_char_divide_search(paramline,divider,1))){
string=realloc(string,sizeof(char*)*i);
string[i-1]=yon_char_new(param);
i++;
if (strcmp(param,paramline)==0) break;
}
// string=realloc(string,sizeof(char*)*i);
// string[i-1]=yon_char_new(paramline);
// i++;
// printf("%d\n",i);
*size=i-1;
char *param = strstr(paramline,divider);
for (;param;param=strstr(paramline,divider)){
string = yon_remalloc(string,sizeof(char*)*((*size)+1));
string[(*size)]=yon_char_divide(paramline,strlen(paramline)-strlen(param));
*size=(*size)+1;
}
if (string){
string = yon_remalloc(string,sizeof(char*)*((*size)+1));
string[(*size)]=paramline;
(*size)+=1;
}
return string;
}
/**yon_char_parsed_rip(char **char_string, int *size, int item_to_delete)
@ -746,6 +770,26 @@ int yon_char_parsed_check_exist(char **parameters, int size, char *param){
return -1;
}
/**yon_char_parsed_check_repeats(char **parameters, int size)
* [EN]
* Checks if [parameters] string array of length [size]
* has repeated elements;
* [RU]
* Проверяет есть ли в массиве строк [parameters], размера [size]
* повторения
*/
int yon_char_parsed_check_repeats(char **parameters, int size){
for (int i=0;i<size;i++){
for (int j=0;j<size;j++){
if (parameters[i]&&parameters[j]){
if (!strcmp(parameters[i],parameters[j])&&i!=j)
return 1;
}
}
}
return 0;
}
/**yon_char_parsed_includes_char_parsed (config_str source, config_str to_check, int source_size, int check_size)
* [EN]
*

@ -155,6 +155,8 @@ char **yon_char_parsed_rip(char **char_string, int *size, int item_to_delete);
int yon_char_parsed_check_exist(char **parameters, int size, char *param);
int yon_char_parsed_check_repeats(char **parameters, int size);
int yon_char_find_count(char *source, char *find);
int yon_char_parsed_includes_char_parsed (config_str source, config_str to_check, int source_size, int check_size);

Loading…
Cancel
Save