Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #define MAX_STRING_LENGHT 256
- int numsub(char *str, char *sub)
- {
- int num = 0;
- char *ptrstr;
- char *ptrsub;
- while (*str)
- {
- if (*str == *sub)
- {
- int trigger = 1;
- ptrstr = str;
- ptrsub = sub;
- while (*ptrstr &&*ptrsub)
- {
- trigger = trigger && (*ptrstr == *ptrsub);
- ptrstr++;
- ptrsub++;
- }
- if (trigger)
- {
- num++;
- }
- }
- str++;
- }
- return num;
- }
- char *strstr(char* str, char* sub)
- {
- char *ptrstr;
- char *ptrsub;
- while (*str)
- {
- if (*str == *sub)
- {
- int trigger = 1;
- ptrstr = str;
- ptrsub = sub;
- while (*ptrstr &&*ptrsub)
- {
- trigger = trigger && (*ptrstr == *ptrsub);
- ptrstr++;
- ptrsub++;
- }
- if (trigger)
- {
- return str;
- }
- }
- str++;
- }
- return NULL;
- }
- int str_len(char *str)
- {
- int len = 0;
- while (*str)
- {
- len++;
- str++;
- }
- return len;
- }
- char *str_ncpy(char *toHere, char *fromHere, int n)
- {
- char* buffer2 = (char*)malloc(MAX_STRING_LENGHT);
- int i;
- toHere = buffer2;
- if (n>str_len(fromHere))
- {
- n = str_len(fromHere);
- }
- for (i = 0; i<n; i++)
- {
- toHere[i] = fromHere[i];
- //printf("%c\n", toHere[i]);
- //printf("%d\n", i);
- }
- toHere[i] = '\0';
- return toHere;
- }
- char *str_ncat(char *toHere, char *fromHere, int n)
- {
- int l = str_len(toHere), k, i;
- i=l;
- printf("i(1)=%d\n",i);
- for (i = l, k = 0; i<l + n; i++, k++)
- {
- //printf("%c\n", toHere[i]);
- toHere[i] = fromHere[k];
- //printf("%c\n",toHere[i]);
- }
- toHere[i] = '\0';
- return toHere;
- }
- char* findandinsert(char* str, char* sub, char* rep)
- {
- int i, l;
- l = numsub(str, sub);
- char* buffer = (char*)malloc(MAX_STRING_LENGHT);
- char* buffer1 = (char*)malloc(MAX_STRING_LENGHT);
- char* buffer2 = (char*)malloc(MAX_STRING_LENGHT);
- buffer1 = str;
- buffer2 = str_ncpy(buffer2,buffer1,0);
- if (l == 0)
- {
- return str;
- }
- for (i = 0; i < l; i++)
- {
- buffer1 = str;
- printf("buffer1: %s\n", buffer1);
- buffer = str_ncpy(buffer, buffer1, str_len(str) - str_len(strstr(str, sub)));
- printf("buffer: %s\n", buffer);
- buffer = str_ncat(buffer, rep, str_len(rep));
- printf("buffer: %s\n", buffer);
- buffer2 = str_ncat(buffer2, buffer , str_len(buffer));
- printf("buffer2: %s\n", buffer2);
- str = strstr(str, sub) + str_len(sub);
- printf("str: %s\n\n", str);
- }
- buffer2 = str_ncat(buffer2, str, str_len(str));
- return buffer2;
- }
- int main()
- {
- int i, l;
- char* str = (char*)malloc(MAX_STRING_LENGHT);
- char* sub = (char*)malloc(MAX_STRING_LENGHT);
- char* rep = (char*)malloc(MAX_STRING_LENGHT);
- str = "aaaabcdebcfgbc";
- sub = "bc";
- rep = "9";
- l = numsub(str, sub);
- printf("INITIAL STR: %s\n", str);
- printf("SUBSTR: %s\n", sub);
- printf("REPSTR: %s\n\n", rep);
- printf("FINAL STR: %s\n", findandinsert(str, sub, rep));
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement