#include #include #include int FileSize(char* filename); int* instances(char* page, char* str); int main(int argc, char** argv){ if(argc != 4) { printf("Invalid Syntax\nTry ./fnr filename old_string new_string\n"); return -1; } int size = FileSize(argv[1]); if(size == -1) { printf("Error could not find file with the name [%s]\n", argv[1]); return -1; } char file_buffer[size]; int old_str_size = 0; int new_str_size = 0; while(argv[2][old_str_size] != 0) { old_str_size++; } while(argv[3][new_str_size] != 0) { new_str_size++; } FILE* fptr = fopen(argv[1], "r"); fread(file_buffer, sizeof(char), size, fptr); fclose(fptr); int* all_instance = instances(file_buffer, argv[2]); int num_instances = 0; while(all_instance[num_instances] != -1) { num_instances++; } all_instance[num_instances] = 1000000; all_instance[num_instances+1] = -1; int new_buffer_size = size - (num_instances * old_str_size) + (num_instances * new_str_size); char new_buffer[new_buffer_size]; int i = 0; int j = 0; int k = 0; int n = 0; while(i < new_buffer_size) { if(j < all_instance[n]) { new_buffer[i] = file_buffer[j]; i++; j++; } else { for(int k=0;k 0) { match = 0; } } result[n] = -1; return result; }