int main(int argc, char* argv[]) { setlocale(0, "russian"); int i=0; int N=0; char* str= NULL; // строка для работы FILE *f; // исходный файл FILE *f1; // файл для печати unsigned long long te, tb; if (argc < 4) { printf("Нет достаточного числа аргументов!"); return BADARG; } f = fopen(argv[1], "r"); if (f == NULL) { printf("Невозможно открыть исходный файл!"); return BADINFILE; } f1 = fopen(argv[2], "w"); if (f1 == NULL) { printf("Невозможно открыть файл результата!"); fclose(f); return BADOUTFILE; } if (strcmp(argv[3],"")==0) { printf("Заменяемая строка пуста!"); fclose(f); fclose(f1); return BADINSUBSTR; } te = tick(); while ((str = freadstring(f, &N)) != NULL) { i++; if (strreplace(&str, argv[3], argv[4], N) == -1) { printf("Строка %i не была обработана и выведена в файл", i); } else fprintf(f1, "%s", str); free(str); } tb = tick(); fclose(f); fclose(f1); printf("\nУспешно завершено! Время работы программы: %llu", tb - te); getch(); return 0; }
char* read_string(FILE* file, char* skip_chars, int delim, size_t max_len) { int tmp; byte tmp2; char* str = NULL; c_array skip; str = (skip_chars) ? skip_chars : (char*)""; SET_C_ARRAY(skip, (byte*)skip_chars, 1, strlen(str)); do { tmp = getc(file); if (tmp == EOF) return NULL; tmp2 = tmp; } while (is_any(&skip, &tmp2, are_equal_uchar)); ungetc(tmp, file); do { str = freadstring(file, delim, max_len); } while (!str); return str; }
char* freadline(FILE* input) { return freadstring(input, '\n', 0); }