Необработанное исключение win32 произошло в main.exe - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Последняя строка вызывает отладчик с ошибкой Необработанное исключение win32 произошло в main.exe [10000] Необработанное исключение по адресу 0x77B411D2 (ntdll.dll) в main.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0x004040FF. Как я понимаю, это проблема с памятью, только чем она вызвана - идей нет.
Листинг программы
  1. void input (float *a,float *b,float *c,float *tb,float *te,float *t1,float *t2,float *al,float *V1)
  2. {
  3. int tempSTR;
  4. // case 2 stuff
  5. int ch, i;
  6. FILE *fp; //указатель на поток
  7. char str[20]; //массив строк
  8. char *estr; // указатель с адрессом массива
  9. //
  10. float inpd [8];
  11. printf("1 Ввести данные с клавиатуры \n2 Загрузить существующую сессию\n\n");
  12. scanf("%d",&tempSTR);
  13. do
  14. {
  15. switch (tempSTR)
  16. {
  17. case 2 : //Вывод журнала сессий
  18. fp=("sessionlog.txt","r");
  19. // Проверка открытия
  20. if (fp == NULL) printf ("\nОшибка открытия журнала сессий\n");
  21. else printf ("\nЖурнал сессий открыт успешно\n");
  22. //Считываем кол-во сохраненных сессий
  23. estr=fgets(str, sizeof(str), fp);

Решение задачи: «Необработанное исключение win32 произошло в main.exe»

textual
Листинг программы
  1. printf("Введите название сессии для загрузки либо exit для возврата к выбору вариантов ввода\n");
  2.             scanf("%s",&str);
  3.             if (strcmp(str,"exit"))
  4.             {
  5.  
  6.                 memset(&adress, 0, sizeof(adress));
  7.                 strcat (adress,"Sessions/");
  8.                 strcat (adress,str);
  9.                 printf ("\n%s\n", adress);
  10.                 fp=fopen (adress,"r");
  11.                 //проверка открытия
  12.                 if (fp == NULL) {printf ("\nСессия не найдена\n"); tempSTR=4; break;}
  13.                 else printf ("Сессия открыта успешно\n");
  14.                 //считываем данные
  15.                 for (i=0;i<=8;i++)
  16.                 {
  17.                     fgets(str, sizeof(str), fp);
  18.                     printf("%s",str);
  19.                     //char *end_ptr;
  20.  
  21.                     strToNum = atof(str);
  22.                     printf ("%f\n", strToNum);
  23.                     /*if (*end_ptr)
  24.                     {
  25.                         //Сигнализируем об ошибке в строке
  26.                         printf("\n ошибка при чтении %d-ого параметра\n",i+1);
  27.                     }*/
  28.  
  29.                     inpd[i] = strToNum;
  30.  
  31.                 }
  32.                 fclose(fp);

Объяснение кода листинга программы

  1. Программа запрашивает у пользователя ввод названия сессии для загрузки или команды exit для возврата к выбору вариантов ввода.
  2. Введенное значение сохраняется в переменной типа char под именем str.
  3. Если пользователь ввел exit, программа завершается.
  4. В противном случае, программа формирует строку adress, объединяя строку Sessions/ с введенным пользователем названием сессии.
  5. Программа проверяет, открывается ли файл с именем adress для чтения. Если файл не открывается, выводится сообщение Сессия не найдена.
  6. Если файл открывается успешно, выводится сообщение Сессия открыта успешно.
  7. Программа считывает данные из файла в цикле, где каждая итерация соответствует одному параметру сессии.
  8. Каждый параметр сессии считывается в строку str, затем преобразуется в числовой формат с помощью функции atof и сохраняется в соответствующем элементе массива inpd.
  9. Если при считывании параметра возникает ошибка (например, строка не может быть преобразована в число), программа выводит сообщение об ошибке и продолжает считывание следующего параметра.
  10. Программа закрывает файл после считывания всех параметров сессии.

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


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

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

9   голосов , оценка 4.444 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы