Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.86
awpe
2 / 2 / 0
Регистрация: 23.11.2011
Сообщений: 87
#1

Проверка существования структуры - C++

17.12.2011, 21:32. Просмотров 2980. Ответов 46
Метки нет (Все метки)

Гугл ничего не дал так, что думаю будет многим полезно.

Язык си,

как проверить существует ли структура по данному адресу (была ли она задана)?

В других языках есть try/catche на си вроде нет, только на си++.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.12.2011, 21:32     Проверка существования структуры
Посмотрите здесь:

Проверка существования файла - C++
Всем привет! Как можно реализовать проверку существования файла (если файл не существует, то при чтении выдается ошибка, при а при записи...

Проверка существования логина - C++
Помогите пожалуйста, нужно сделать проверку на логин, т.е. если при регистрации нового аккаунта с уже существующим логином, выводило, что...

Проверка существования файла - C++
Надо сбросить массив char в файл. Если файл уже существует - ждать, пока его не удалят. Вот этот код не компилируется, выдаёт error C2664:...

Проверка на существования файла - C++
Можно ли проверять файл на существование таким образом: ifstream file("file.txt"); if (file.is_open()) {} //Если файл...

Проверка условия существования треугольника - C++
нужно написать программу Даны 3 числа, определить могут ли эти числа являться сторонами треугольника

проверка существования файла с использованием ifstream() - C++
гуглил, но ничего там так и не нашел. Собственно как?

Проверка существования трехугольника с заданными сторонами, и определение его типа - C++
В консольном режиме создать программу для проверки существования трехугольника с задаными сторонами. Если трехугольник существует,указать...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alkagolik
Заблокирован
17.12.2011, 21:35     Проверка существования структуры #2
Цитата Сообщение от awpe Посмотреть сообщение
как проверить существует ли структура по данному адресу
обратиться к полю структуры. а с чего ей не быть?
awpe
2 / 2 / 0
Регистрация: 23.11.2011
Сообщений: 87
17.12.2011, 21:48  [ТС]     Проверка существования структуры #3
При обращении к полю несуществующей структуры получаю ошибку access violation, что логично так как если её нет, то память под неё не выделялась, и следовательно ОСь об этом не знает и вырубает программу. Ну я так это понимаю поправьте если неправ.

Добавлено через 3 минуты
Так можно проверить структуру на существование простым способом или нужно составлять программу так чтобы эту проверку избежать?
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
17.12.2011, 21:54     Проверка существования структуры #4
Цитата Сообщение от awpe Посмотреть сообщение
или нужно составлять программу так чтобы эту проверку избежать?
только так
есть функции наподобии IsBadWritePtr, но 100%ной уверенности никогда не будет
awpe
2 / 2 / 0
Регистрация: 23.11.2011
Сообщений: 87
17.12.2011, 22:01  [ТС]     Проверка существования структуры #5
В моей программе структура содержит адреса родителя и нескольких веток, когда я циклом обхожу дерево, мне нужно проверять есть ли ветка или нет, создаю структуры malloc'ом поэтому в полях указателей на ветки всегда что то есть (случайные фрагменты), доступа к main по заданию нет, а функция может вызываться сколько угодно раз в любом порядке, поэтому не могу точно задать что корень в начале программы имеет пустые ветки, следовательно нужно проверять, либо предложите пожалуйста другой путь.
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
17.12.2011, 22:06     Проверка существования структуры #6
Цитата Сообщение от awpe Посмотреть сообщение
мне нужно проверять есть ли ветка или нет
при создании новой вершины дерева нужно в ее полях на обе ветви выставить NULL
при создании ветви заменить NULL на указатель на ветвь
при обходе дерева проверять - если не NULL то там есть ветвь
awpe
2 / 2 / 0
Регистрация: 23.11.2011
Сообщений: 87
17.12.2011, 22:10  [ТС]     Проверка существования структуры #7
по другому поставлю вопрос - зная адрес можно проверить лежит ли там экземпляр структуры?

Добавлено через 1 минуту
IsBadWritePtr только под винду

Добавлено через 1 минуту
мне под *NIX надо

Добавлено через 52 секунды
Цитата Сообщение от alex_x_x Посмотреть сообщение
при создании новой вершины дерева нужно в ее полях на обе ветви выставить NULL
Я так и делаю, но у меня по условию нет доступа к первому узлу
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
17.12.2011, 22:10     Проверка существования структуры #8
Цитата Сообщение от awpe Посмотреть сообщение
по другому поставлю вопрос - зная адрес можно проверить лежит ли там экземпляр структуры?
Нет. Нельзя.
awpe
2 / 2 / 0
Регистрация: 23.11.2011
Сообщений: 87
17.12.2011, 22:10  [ТС]     Проверка существования структуры #9
неужели от меня на первом курсе требуют в домашке реализовать try/catche на си?
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
17.12.2011, 22:12     Проверка существования структуры #10
Цитата Сообщение от awpe Посмотреть сообщение
по другому поставлю вопрос - зная адрес можно проверить лежит ли там экземпляр структуры?
Добавлено через 1 минуту
IsBadWritePtr только под винду
Добавлено через 1 минуту
мне под *NIX надо
нет
Цитата Сообщение от awpe Посмотреть сообщение
В других языках есть try/catche на си вроде нет, только на си++.
это бы тоже не помогло

я не понимаю как так можно строить дерево, чтобы нельзя было проверить, есть в вершине ветви или нету
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
17.12.2011, 22:16     Проверка существования структуры #11
Чисто теоретически любой набор байтов можно считать структурой. Особенно на Си.
C
1
2
3
4
5
6
7
8
9
struct s {
    int a;
    int b;
};
 
int main() {
    char buf[8] = { 1, 2, 3, 4, 5, 6, 7, 8 };
    struct s *sptr = (struct s*)buf;
}
Вполне нормальная ситуация. А теперь подумайте. Каким образом вообще можно проверить существование структуры по какому-либо адресу?
awpe
2 / 2 / 0
Регистрация: 23.11.2011
Сообщений: 87
17.12.2011, 22:19  [ТС]     Проверка существования структуры #12
Я должен строить только недостающие узлы. У меня нет возможности первому узлу в начале программы присвоить NULL на все ветки, а если в функции ставить NULL для корня то каждый следующий её вызов обрубит ветки дерева...
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
17.12.2011, 22:21     Проверка существования структуры #13
awpe, может быть Вы уже покажете задание полностью. Есть подозрение, что Вы просто его неправильно понимаете.
awpe
2 / 2 / 0
Регистрация: 23.11.2011
Сообщений: 87
17.12.2011, 22:23  [ТС]     Проверка существования структуры #14
Цитата Сообщение от fasked Посмотреть сообщение
А теперь подумайте. Каким образом вообще можно проверить существование структуры по какому-либо адресу?
Ну на другом языке я бы, зная устройство своей структуры, проверил бы значение одного её элемента, случайный набор байтов вызовет ошибку, на php проверил бы через isset на c++ try/catche, на си не знаю... Разве что только параллельно заданию создать копию структуры в которую писать все изменения...

Добавлено через 25 секунд
http://pastebin.com/tEKfpnCe
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.12.2011, 22:26     Проверка существования структуры
Еще ссылки по теме:

Структуры: проверка на наличие среди продавцов фамилии "Иванов" и если есть, то вывести наименование товара - C++
Поля структуры: Продавец. Наименование товара. Количество товара. Цена товара. Дата продажи. Задача: определить количество товаров...

Возможность существования треугольника по сторонам - C++
Определить возможность существования треугольника по сторонам. Треугольник существует только тогда, когда сумма любых двух его сторон...

Обеспечить контроль существования диапазона - C++
Здравствуйте всем. Не могу исправить ошибки. Изначально код был написан Visual C++, никаких ошибок не было, но преподаватель сказал нужно...

Класс Beta, количество всех существовавших объектов и время существования - C++
Создать класс Beta таким образом , чтобы при уничтожении последнего объекта на экран выдавалось сообщение о наибольшее количество объектов...

Затабулировать функцию внутри прямоугольника и области существования данной функции - C++
Затабулировать функцию Z=f(x,y) с шагами x и y внутри прямоугольника и области существования данной функции. Составить универсальную...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
17.12.2011, 22:26     Проверка существования структуры #15
Цитата Сообщение от awpe Посмотреть сообщение
случайный набор байтов вызовет ошибку
Не вызовет. Если это конечно не какое-то магическое число, которое записывается в спец. поле каждого экзепляра.
Цитата Сообщение от awpe Посмотреть сообщение
на c++ try/catche
Каким это образом? Может поделитесь дельным примером?

Вы кстати свое задание то читали?
m_Parent - ссылка на родителя в дереве (NULL для корня дерева),
m_Branches - ссылка на потомки в дереве (NULL - потомка не существует).
Yandex
Объявления
17.12.2011, 22:26     Проверка существования структуры
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru