Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Проблема с кодом выдает ошибку

КИ 23 Знаток (308), открыт 2 недели назад
Ошибка такая Вызвано исключение по адресу 0x795584E3 (ucrtbased.dll) в Kurs.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xFFFFFFCC.
case 1:sscanf_s(token, "%d", &Product->House); break;
case 2:sscanf_s(token, "%d", &Product->Kvartira); break;
case 3:sscanf_s(token, "%d", &Product->Indeks); break;
case 4:sscanf_s(token, "%d", &Product->Cena); break;
case 5:sscanf_s(token, "%d", &Product->Monthstart); break;
case 6:sscanf_s(token, "%d", &Product->Monthend); break;
case 7:strcpy(token,Product->NumberKwit);
FillString(Product->NumberKwit, 8, 1); break;
case 8:strcpy(token,Product->Street);
FillString(Product->Street, 8, 2); break;
case 9:strcpy(token, Product->Name);
FillString(Product->Name, 8, 3); break;
Ошибка выдается на case 7
3 ответа
яспер маглот Ученик (203) 2 недели назад
Тут только перекрестится
UNIX Мастер (1460) 2 недели назад
Проблема в вашем коде кроется в строке
`strcpy(token,Product->NumberKwit);` в case 7
// Предположим, Product->NumberKwit - это массив размером 10 символов
case 7:
strncpy(Product->NumberKwit, token, 9); // Копируем максимум 9 символов
Product->NumberKwit[9] = '\0'; // Добавляем нулевой символ в конец строки
break;
Скорее всего, `Product->NumberKwit` - это указатель на область памяти, которая не была правильно выделена или имеет недостаточный размер.
Либо проверьте выделение памяти:
- Убедитесь, что `Product->NumberKwit` правильно инициализирован и имеет достаточно места для хранения данных.
- Используйте `malloc` или `calloc`, чтобы выделить достаточно памяти для хранения строки.
- Например, `Product->NumberKwit = (char*)malloc(10);` (если вам нужно хранить максимум 9 символов + нулевой символ).

Либо используйте `strncpy` вместо `strcpy`:
- `strncpy` является более безопасной альтернативой `strcpy`. Она принимает дополнительный аргумент - максимальное количество символов, которые нужно скопировать.
- `strncpy(Product->NumberKwit, token, sizeof(Product->NumberKwit) - 1);`
- Замените `sizeof(Product->NumberKwit) - 1` на реальный размер массива, выделенного для `Product->NumberKwit`.
Александр Искусственный Интеллект (292643) 2 недели назад
так ведь у вас ошибка в коде.
потому и ошибку выдаёт.
у вас хакеров деланных и не такое бывает. крепитесь... тужтесь..
Похожие вопросы