1

Тема: Не працюють деякі модулі в програмі на С

Суть програмки, створення бази даних і виконання різних операцій з ними (Введення, редагування, видалення і т.д.)

Не працює в програмі два модулі, можливо хтось зможе сказати в чому причина, а саме "Видалення"  і "Пошук".

Програма необхідна для курсового проекту.

Робив все по методичці але не все вийшло, в програмуванні не сильний, але щось вийшло зробити, можливо хтось допоможе.

Посилання на програму: http://www.ex.ua/view_storage/240073237195

Або можу скинути на пошту.

Буду вдячний за любу пораду.

2

Re: Не працюють деякі модулі в програмі на С

Якось не круто при видаленні просто замінювати запис на запис з 0-ми. Виходить так безкінечно можна видаляти один і тей же запис =)
А що саме не працює? У мене не Windows, важкувато переписувати :)

3

Re: Не працюють деякі модулі в програмі на С

Є такі повідомлення:
Після компіляції таке повідомлення:
http://s42.radikal.ru/i096/1304/d6/143a769e0113.jpg

При виконанні повідомлення:
http://s018.radikal.ru/i518/1304/a7/d97c30b8847e.jpg

Щось в програмі а що саме так і не можу зрозуміти.

4

Re: Не працюють деякі модулі в програмі на С

Є такі повідомлення:
Після компіляції таке повідомлення:
http://s42.radikal.ru/i096/1304/d6/143a769e0113.jpg

При виконанні повідомлення:
http://s018.radikal.ru/i518/1304/a7/d97c30b8847e.jpg

Щось в програмі а що саме так і не можу зрозуміти.

5

Re: Не працюють деякі модулі в програмі на С

У вас якісь проблеми під час доступу до пам'яті: неініціалізована змінна, дикий покажчик...
Код глянути не можу: ех.юа заблокований у мене наразі.

I belong to the Dead Generation.

6

Re: Не працюють деякі модулі в програмі на С

Перезалив на інший http://us.ua/1089552/

7

Re: Не працюють деякі модулі в програмі на С

На майбутнє: постіть на pastebin.com: зручніше буде. ;)

Тепер по суті проблеми: зміст розкрито у тих warning'ах, що наведені вами.

Прошу пана: рядок 298. Порівняння символа із рядком. Тут креш може закрастися випадково і слушно, бо strcmp() розуміє значення у змінній t як адресу у пам'яті, стукає туди, починає порівнювати... Ну і т.д.

if((strcmp(t,a.name))==NULL) 

Якщо ви хотіли знайти символ у рядку, користуйте strchr().

І ще граблі (і 95% креш) буде у вас отут:

  char*UA(const char*text)
{
     char bufUA[256];          
     CharToOem(text, bufUA);
     return bufUA;
     
}

Масив створено статичним у межах функції: із виходом із неї змінна знищується. Тож по факту ви повертаєте покажчик у нікуди... Варіанти вирішення:
1. Глобальна змінна (фе);
2. Створення динамічного масиву у функції;
3. Передача масиву на заповнення як параметра функції.

I belong to the Dead Generation.