Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #define MAX_STRING_LENGHT 1000
- int str_len(char *str)
- {
- int len = 0;
- while (*str)
- {
- len++;
- str++;
- }
- return len;
- }
- int numsub(char *str, char *sub)
- {
- int num = 0,l,i=0;
- char *ptrstr;
- char *ptrsub;
- l=str_len(str);
- while (*str)
- {
- if (*str == *sub)
- {
- int trigger = 1;
- ptrstr = str;
- ptrsub = sub;
- while (*ptrstr &&*ptrsub)
- {
- trigger = trigger && (*ptrstr == *ptrsub);
- ptrstr++;
- ptrsub++;
- i++;
- }
- if (trigger && *ptrstr)
- {
- 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 && *ptrstr)
- {
- return str;
- }
- }
- str++;
- }
- return NULL;
- }
- 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 argc, char *argv[])
- {
- system ("chcp 1251");
- //printf("file=%s",argv[1]);
- FILE *f,*f1;
- char* str = (char*)malloc(MAX_STRING_LENGHT);
- char* sub = (char*)malloc(MAX_STRING_LENGHT);
- char* rep = (char*)malloc(MAX_STRING_LENGHT);
- char* str1 = (char*)malloc(MAX_STRING_LENGHT);
- sub = "1 2 3";
- rep = "鮏竟-葢・・;
- if ( (f = fopen("file_main.txt", "r")) == NULL ) exit(0);
- f1=fopen("file1.txt","w+");
- while ( !feof(f) )
- {
- fgets(str, MAX_STRING_LENGHT, f);
- fputs(str,f1);
- printf("%s", str);
- }
- putchar('\n');
- putchar('\n');
- f = fopen("file_main.txt", "w+");
- fseek(f1,0,0);
- while (!feof(f1))
- {
- fgets(str1, MAX_STRING_LENGHT, f1);
- str1=findandinsert(str1,sub,rep);
- printf("%s", str1);
- fputs(str1,f);
- }
- remove("file1.txt");
- fclose(f);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement