Ошибка "Недопустимый параметр был передан функции" - C (СИ)
Формулировка задачи:
Написал программу, которая должно в заданном месте в текстовом файле вставить подстроку, при компиляции выдает вот такю ошику: Необработанное исключение по адресу 0x512FE5F6 (ucrtbased.dll) в Проект1.exe: Недопустимый параметр был передан функции, для которой недопустимые параметры вызывают неустранимую ошибку.
Сам код
Что я не так делаю подскажите пожалуйста.
#define _CRT_SECURE_NO_WARNINGS #include#include #include char* create_string(char *buf, int memory, int s) { if (memory == 0) buf = (char*)malloc(sizeof(char)); else buf = (char*)realloc(buf, sizeof(char) * (memory + 1)); *(buf + memory) = s; return buf; } int main(int argc, char **argv) { FILE *f = fopen(argv[1], "rt"); long position1 = atol(argv[3]); char *buf = NULL; int ch; int i; int memory = 0; while (ftell(f) != position1) { ch = fgetc(f); buf = create_string(buf, memory, ch); memory++; } buf = (char *)realloc(buf, sizeof(char) * (memory + strlen(argv[2]))); for (i = 0; i < strlen(argv[2]); i++) { buf[memory] = argv[2][i]; memory++; } if (fseek(f, 0, SEEK_CUR) == 0) { while (1) { ch = fgetc(f); if (ch == EOF) { buf = create_string(buf, memory, '\0'); break; } buf = create_string(buf, memory, ch); memory++; } } fclose(f); f = fopen(argv[1], "wt"); for (i = 0; i < strlen(buf); i++) { fprintf(f, "%c", buf[i]); fflush(f); } fclose(f); return 0; }
Решение задачи: «Ошибка "Недопустимый параметр был передан функции"»
textual
Листинг программы
buf = create_string(buf, memory, '\0');
Объяснение кода листинга программы
В данном коде создается строка (называемая buf) с помощью функции create_string. Эта функция принимает три параметра: buf, memory и '\0'.
- buf - это указатель на переменную, которая будет использоваться для хранения новой строки.
- memory - это область памяти, в которой будет храниться строка.
- '\0' - это символ, который используется для завершения строки. Функция create_string выделяет память для строки, копирует в нее содержимое переменной buf и добавляет символ '\0' в конец строки для обозначения конца строки. Таким образом, код создает строку с помощью функции create_string, передавая ей указатель на переменную buf, область памяти для хранения строки и символ '\0'.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д