Необработанное исключение win32 произошло в main.exe - C (СИ)
Формулировка задачи:
Последняя строка вызывает отладчик с ошибкой Необработанное исключение win32 произошло в main.exe [10000]
Необработанное исключение по адресу 0x77B411D2 (ntdll.dll) в main.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0x004040FF.
Как я понимаю, это проблема с памятью, только чем она вызвана - идей нет.
void input (float *a,float *b,float *c,float *tb,float *te,float *t1,float *t2,float *al,float *V1) { int tempSTR; // case 2 stuff int ch, i; FILE *fp; //указатель на поток char str[20]; //массив строк char *estr; // указатель с адрессом массива // float inpd [8]; printf("1 Ввести данные с клавиатуры \n2 Загрузить существующую сессию\n\n"); scanf("%d",&tempSTR); do { switch (tempSTR) { case 2 : //Вывод журнала сессий fp=("sessionlog.txt","r"); // Проверка открытия if (fp == NULL) printf ("\nОшибка открытия журнала сессий\n"); else printf ("\nЖурнал сессий открыт успешно\n"); //Считываем кол-во сохраненных сессий estr=fgets(str, sizeof(str), fp);
Решение задачи: «Необработанное исключение win32 произошло в main.exe»
textual
Листинг программы
printf("Введите название сессии для загрузки либо exit для возврата к выбору вариантов ввода\n"); scanf("%s",&str); if (strcmp(str,"exit")) { memset(&adress, 0, sizeof(adress)); strcat (adress,"Sessions/"); strcat (adress,str); printf ("\n%s\n", adress); fp=fopen (adress,"r"); //проверка открытия if (fp == NULL) {printf ("\nСессия не найдена\n"); tempSTR=4; break;} else printf ("Сессия открыта успешно\n"); //считываем данные for (i=0;i<=8;i++) { fgets(str, sizeof(str), fp); printf("%s",str); //char *end_ptr; strToNum = atof(str); printf ("%f\n", strToNum); /*if (*end_ptr) { //Сигнализируем об ошибке в строке printf("\n ошибка при чтении %d-ого параметра\n",i+1); }*/ inpd[i] = strToNum; } fclose(fp);
Объяснение кода листинга программы
- Программа запрашивает у пользователя ввод названия сессии для загрузки или команды
exit
для возврата к выбору вариантов ввода. - Введенное значение сохраняется в переменной типа char под именем
str
. - Если пользователь ввел
exit
, программа завершается. - В противном случае, программа формирует строку
adress
, объединяя строкуSessions/
с введенным пользователем названием сессии. - Программа проверяет, открывается ли файл с именем
adress
для чтения. Если файл не открывается, выводится сообщениеСессия не найдена
. - Если файл открывается успешно, выводится сообщение
Сессия открыта успешно
. - Программа считывает данные из файла в цикле, где каждая итерация соответствует одному параметру сессии.
- Каждый параметр сессии считывается в строку
str
, затем преобразуется в числовой формат с помощью функцииatof
и сохраняется в соответствующем элементе массиваinpd
. - Если при считывании параметра возникает ошибка (например, строка не может быть преобразована в число), программа выводит сообщение об ошибке и продолжает считывание следующего параметра.
- Программа закрывает файл после считывания всех параметров сессии.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д