С | Ошибка при записи по адресу

#include
#include
#include
    
enum Active
{
    EXIT = 0,
    SCAN_DATA,
    PRINT_DATA,
    ANALIZE_DATA
};
    
int scan_data(char**, int, int*);
    
int main()
{
    setlocale(0, "Russian");
    char main_flag = 'y';
    int do_next = 0;
    int len_array = 1;
    char symbol;
    int len_str = 0;
    int inspect = 0;
    int count_items = 0;
    char** pcharArray = NULL;
    int* pintArray_counter = NULL;
    char* pcharArray_counter = NULL;
    int* plen_strs = NULL;
    
    while (main_flag == 'y')
    {
        printf("Введите номер действия: \n0 - Выход; \n1 - Считывание данных с файла; \n");
        printf("2 - Печать данных из файла; \n3 - Анализ данных из файла; \n");
    
        if (!scanf("%d", &do_next))
        {
            fflush(stdin);
            printf("Введите число от 0 до 4.\n");
            continue;
        }
    
        switch (do_next)
        {
            case EXIT:
                printf("Программа завершена. Спасибо за сеанс! \n");
                main_flag = 'n';
                // очистка памяти массива
                break;
            case SCAN_DATA:
                len_array = scan_data(pcharArray, len_array, plen_strs);
                break;
            case PRINT_DATA:
                //потом напишу
            case ANALIZE_DATA:
                //потом напишу
                break;
            default:
                printf("Введите корректное значение. Введено %d.\n", do_next);
                break;
        }
    }
}
    
int scan_data(char** pcharArray, int len_array, int* plen_strs)
{
    FILE* file;
    int count_lines = 1;
    int len_str = 0;
    char symbol = NULL;
    file = fopen("E:/YandexDisk/IKIT/OP/Semester_2_C/lab_3/text.txt", "r");
    //file = fopen("D:/YandexDisk/IKIT/OP/Semester_2_C/lab_3/text.txt", "r");
    if (!file)
    {
        printf("Файл не найден.");
        return 0;
    }
    printf("Файл найден. \n");
    while ((symbol = fgetc(file)) != EOF)
    {
        if (symbol == '\n')
        {
            count_lines++;
        }
    }
    len_array = count_lines;
    plen_strs = (int*)calloc(count_lines, sizeof(int));
    rewind(file);
    count_lines = 0;
    pcharArray = (char**)malloc(count_lines * sizeof(char*));
    while ((symbol = fgetc(file)) != EOF)
    {
        if (symbol != '\n')
        {
            len_str++;
        }
        else
        {
            pcharArray[count_lines] = (char*)malloc(len_str * sizeof(char));
            plen_strs[count_lines] = len_str;
            len_str = 0;
            count_lines++;
        }
    }
    if (symbol == EOF)
    {
        pcharArray[count_lines] = (char*)malloc(len_str * sizeof(char));
        plen_strs[count_lines] = len_str;
        count_lines++;
    }
    rewind(file);
    len_str = 0;
    count_lines = 0;
    while ((symbol = fgetc(file)) != EOF)
    {
        if (symbol != '\n')
        {
            pcharArray[count_lines][len_str] = symbol;
            printf("%c - %c - %d - %d \n", pcharArray[count_lines][len_str], symbol, len_str, plen_strs[count_lines]);
            len_str++;
        }
        else
        {
            count_lines++;
            len_str = 0;
        }
    }
    fclose(file);
    printf("Пароли считаны. \n");
    return len_array;
}

Ребят, помогите пожалуйста.
0xC0000005: нарушение прав доступа при записи по адресу 0x00636173

Ответы (0 шт):