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

printf sprintf не понятно - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ время жизни временного объекта http://www.cyberforum.ru/cpp-beginners/thread949767.html
можно ли передать временный объект в функцию по ссылке? void f1(int & ); ..... int main() { f1(int());
C++/CLI WinForms Открыть окно выбора файла Вот например я нажимаю на кнопочку и открываю конкретную картинку, например эту pictureBox1->Image=Image::FromFile("C:\\110215-1033.jpg"); А вот как сделать чтобы мне предоставлялся выбор какой файл открыть. http://www.cyberforum.ru/cpp-beginners/thread949765.html
C++ Ошибка в задаче про банкомат (снова работа со строками)
Ещё одна задача - на этот раз про банкомат, где надо использовать конструкцию map. Задача состоит в том, что надо вывести ответ на каждую из операций, запрашиваемых у банкомата. Программу я написала (с учётом определённых требований к её оформлению): #include<iostream> #include<string> #include<map> #include<algorithm> #include<stdlib.h> using namespace std; int main(){
Метод сортировки "пузырьком" C++
Написать программу которая реализует метод сортировки "пузырьком". Сгенерировать три массива 100, 1.000 и 10.000 элементов типа integer соответственно. Отсортировать полученные массивы по возростанию элементов; определить такие параметры: колличество сравнений, колличество обменов, фактическое время работы.
C++ метод сортировки Шелла http://www.cyberforum.ru/cpp-beginners/thread949738.html
Написать программу которая реализует метод сортировки Шелла. Сгенерировать три массива 100, 1.000 и 10.000 элементов типа integer соответственно. Отсортировать полученные массивы по возростанию элементов; определить такие параметры: колличество сравнений, колличество обменов, фактическое время работы.
C++ Справка C++ Есть ли хорший русскоязычный справочик C++? Я тут нашол одну электронную версию- вставил ignore нет его вставил :: ну забыл я- нет и его.. С нормальной справкой было бы куда легче и учить разбирая пример и учить читаное! подробнее

Показать сообщение отдельно
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
07.09.2013, 19:53     printf sprintf не понятно
Цитата Сообщение от karaulov6 Посмотреть сообщение
Даже если в переменную занести, то только со второго раза срабатывает.
Занесение в переменную никак на результат повлиять не должно. Я предложил это лишь для того, чтобы посмотреть возвращаемое значение функции, но ты потом скрин с отладкой выложил.

Скачал я исходники, там эта функция account_get_strattr ведёт к цепочке вызовов других функций, при этом в случае ошибки какого-либо вызова возвращается NULL. Одна из функций в цепочке — функция attrgroup_find_attr, и в ней есть такой любопытный код:

C
1
2
/* trigger loading of attributes if not loaded already */
if (attrgroup_load(attrgroup)) return NULL; /* eventlog happens earlier */
Т.е. здесь выполняется загрузка атрибутов, если они ещё не загружены. При этом в случае ошибки возвращается NULL.

Смотрим attrgroup_load:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
extern int attrgroup_load(t_attrgroup *attrgroup)
{
    assert(attrgroup);
    assert(attrgroup->storage);
 
    if (FLAG_ISSET(attrgroup->flags, ATTRGROUP_FLAG_LOADED))    /* already done */
    return 0;
    if (FLAG_ISSET(attrgroup->flags, ATTRGROUP_FLAG_DIRTY)) { /* if not loaded, how dirty ? */
    eventlog(eventlog_level_error, __FUNCTION__, "can't load modified account");
    return -1;
    }
 
    attrgroup_set_loaded(attrgroup);
    if (storage->read_attrs(attrgroup->storage, _cb_load_attr, attrgroup)) {
    eventlog(eventlog_level_error, __FUNCTION__, "got error loading attributes");
    return -1;
    }
    attrgroup_clear_dirty(attrgroup);
 
    return 0;
}
Это только моё предположение, но здесь может при первом вызове устанавливается флаг ATTRGROUP_FLAG_LOADED (строка "attrgoup_set_loaded(attrgroup);") затем в следующей строке возникает ошибка и в результате вся цепочка вызовов заканчивается возвратом NULL. При втором вызове флаг ATTRGROUP_FLAG_LOADED уже установлен, поэтому следующие операции не выполняются, и ты получаешь свой атрибут.

В общем, пройди в отладчике всю цепочку вызовов, обращая внимание на эти функции, и определи, почему при первом вызове account_get_auth_mute_reason возвращается NULL.

Добавлено через 2 минуты
Кстати, в функциях есть логирование, попробуй его включить.
 
Текущее время: 15:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru