Ошибка "Недопустимый параметр был передан функции" - 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'.

  1. buf - это указатель на переменную, которая будет использоваться для хранения новой строки.
  2. memory - это область памяти, в которой будет храниться строка.
  3. '\0' - это символ, который используется для завершения строки. Функция create_string выделяет память для строки, копирует в нее содержимое переменной buf и добавляет символ '\0' в конец строки для обозначения конца строки. Таким образом, код создает строку с помощью функции create_string, передавая ей указатель на переменную buf, область памяти для хранения строки и символ '\0'.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы