UNIX
Мастер
(1544)
6 месяцев назад
Проблема в вашем коде кроется в строке
`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`.
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