Программа, считывающая словарь в динамический массив char, прерывает работу - C (СИ)
Формулировка задачи:
Здравствуйте!
Я пишу словарь и работаю над функцией, которая подсчитывает количество строк в файле в переменную counter, затем создает динамический массив размера counter*3 и считывает в него файл. Сейчас для теста прошу программу вывести мне словарик (он пока маленький) на экран. Когда я её запускаю, она собирается (MSVS2015), запускается, благополучно выводит словарик на экран (то есть, все, что надо, считалось в наш чудесный массив), а потом внезапно прекращает работу из-за неизвестной ошибки. Когда запускаю отладчик, он мне говорит: "Необработанное исключение по адресу 0x0FFC3F7D (ucrtbased.dll) в anotherone.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xFFFFFFCD.
Если для этого исключения имеется обработчик, выполнение программы может быть продолжено безопасно."
Код:
Возможно, вы подскажете, где спряталась ошибка? Заранее спасибо!
#include<stdio.h> #include<conio.h> #include<string.h> #include<stdlib.h> #pragma warning(disable:4996) void main() { FILE* in = fopen("dictionary.txt", "r+"); size_t counter = 0; int just, pre = EOF; while ((just = fgetc(in)) != EOF) { pre = just; if (just == '\n') ++counter; putchar(just); } if (pre != '\n') { ++counter; } char **dict; dict = new char*[counter]; for (int i = 0; i < counter; i++) dict[i] = new char[3]; for (int i = 0; i < counter; i++) { for (int j = 0; j < 3; j++) { fscanf(in, "%s ", &dict[i][j]); printf("%s", dict[i][j]); } } _getch(); }
Решение задачи: «Программа, считывающая словарь в динамический массив char, прерывает работу»
textual
Листинг программы
for (int j = 0; j < 3; j++) { fscanf(in, "%s ", &dict[i][j]); printf("%s", dict[i][j]); }
Объяснение кода листинга программы
- В цикле for выполняется чтение словаря в динамический массив char
- Переменная j является счетчиком в цикле
- fscanf считывает слова в динамический массив, разделенные пробелами
- Результат считывания сохраняется в переменной dict[i][j]
- Значение переменной dict[i][j] выводится на экран с помощью функции printf
- Результатом работы программы будет вывод на экран трех слов из словаря
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д