Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> очень красивая функция с помощью профессионалов 
:(
    Опции темы
segadir
Дата 8.9.2010, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 7.9.2010

Репутация: нет
Всего: нет



Подводя итоги:
Код

# include <stdio.h>
# include <string.h>
# include <time.h>

char *superbuff(unsigned long long int length);
char *getdate(char *format);

char *superbuff(unsigned long long int length){
    static unsigned char f_maloc = FALSE;
    static char *sbuff;

    if (f_maloc) {
     free(sbuff);
        sbuff = NULL;
        f_maloc = FALSE;
    }

    if (length){
        sbuff = malloc((length * sizeof(char)) + 1);
        if(!sbuff)
        {
          printf("Недостаточно памяти\n");
          exit(1);
        }
        f_maloc = TRUE;
    }
    return sbuff;
}

char *getdate(char *format){
    char *buff;
    buff = superbuff(strlen(format) * 2 + 1); // *2 : %Y - 2010
    time_t tm=time(0);
    strftime(buff, strlen(format) * 2 + 1, format, localtime(&tm));
    return buff;
}

printf("DATE %s\n",getdate("%Y/%m/%d %H:%M:%S"));

    superbuff(0);
    return 0;



профи (без сарказма) что скажите?  profit?
PM MAIL   Вверх
borisbn
Дата 8.9.2010, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



segadir, если не секрет, какая необходимость использовать именно Си, а не Си++ ? 
Изучение ?
Компилятор не поддерживает плюсы ( какая-нибудь ARM-архитектура ) ?


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
segadir
Дата 8.9.2010, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 7.9.2010

Репутация: нет
Всего: нет



1 - причина изучив Си перехожу на С++
2 - пока программирую под АВР микроконтроллеры
3 - а по чему бы и нет?   П.С. Си vs С++ вечная тема
PM MAIL   Вверх
djamshud
Дата 8.9.2010, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 4
Всего: 39



segadir, чем вам не нравится мой последний вариант с функцией? У вас все с одной стороны излишне сложно, а с другой - держится на подпорках. Например strlen data = strlen format * 2. Формат %T -> данные hh:mm:ss -> fail. Кроме того, strlen - некомильфо, медленная функция.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
segadir
Дата 8.9.2010, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 7.9.2010

Репутация: нет
Всего: нет



djamshud, почему не нравится? кто сказал? очень даже оригинальненько,  smile  но мне тоже хочеться приложить руку к своему совершенству. 
Я у вас идейку повзаимствовал, с buf=malloc(len);
маленький минус: всёже нужно знать заранее размер строки


а где еще предложения (лень?  : true  : false)   , или тут только один профи djamshud, кстати есть у кого поучиться!

Формат %T -> данные hh:mm:ss -> fail. Да ксожаленью, вы правы хоть программа и не упала, но всётаки так и есть :( буду думать:
1 вариант заранее разбирать входную строку на наличие сокращений %Y %D и тд - (не хорошо как-то)
2 вариант выделить памяти в 10 раз больше (ваще не рационально)
3 вариант  организовать полную динамичность по условию 
Код

while(10 символов прошло) выделить еще 10 ячеек памяти
return *все_кусочки



Это сообщение отредактировал(а) segadir - 8.9.2010, 15:48
PM MAIL   Вверх
boostcoder
Дата 8.9.2010, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 20
Всего: 110



Цитата(segadir @  8.9.2010,  15:28 Найти цитируемый пост)
или тут только один профи djamshud

он конечно не дубень... но! я по глубоким убеждениям(и профф обязанностям) не изобретаю велосипеды. свой ответ я дал. и он _самый_правильный_.
PM WWW   Вверх
djamshud
Дата 8.9.2010, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 4
Всего: 39



boostcoder, ваш ответ плюсовый и бустовый. А ваше мнение о самой правильности своего ответа лишь отражает ваше зазнайство:). Чем он, к примеру, правильнее QDate? А что, если (о боже!) нет с++?

segadir, да я всего лишь любитель:).

Это сообщение отредактировал(а) djamshud - 8.9.2010, 16:17


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
borisbn
Дата 8.9.2010, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Цитата(segadir @  8.9.2010,  15:28 Найти цитируемый пост)
1 вариант заранее разбирать входную строку на наличие сокращений %Y %D и тд - (не хорошо как-то)

что в CRT ( snprintf и т.п.), что в boost'е, что в Qt делают именно так

Это сообщение отредактировал(а) borisbn - 8.9.2010, 16:24


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
boostcoder
Дата 8.9.2010, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 20
Всего: 110



Цитата(djamshud @  8.9.2010,  16:17 Найти цитируемый пост)
ваш ответ плюсовый и бустовый.

в своем первом посте я это подметил.

Цитата(djamshud @  8.9.2010,  16:17 Найти цитируемый пост)
А ваше мнение о самой правильности своего ответа лишь отражает ваше зазнайствоsmile

похоже я вас чем-то зацепил... я не намеренно.

Цитата(djamshud @  8.9.2010,  16:17 Найти цитируемый пост)
Чем он, к примеру, правильнее QDate?

QDate - Blob.
я бы не в коем случае не стал сие использовать. дабы не стать посмешищем для знакомых/коллег smile 

Цитата(djamshud @  8.9.2010,  16:17 Найти цитируемый пост)
А что, если (о боже!) нет с++?

если нет плюсов.. я бы сменил работу, на ту, где нет Си smile 

Это сообщение отредактировал(а) boostcoder - 8.9.2010, 16:27
PM WWW   Вверх
djamshud
Дата 8.9.2010, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 4
Всего: 39



boostcoder,

>похоже я вас чем-то зацепил... я не намеренно.

Нее, я как слон:)

>QDate - Blob.

QDate != Blob.
Он делает ровно то, что должен уметь делать класс-дата. Это во-первых. А во-вторых, паттерны, антипаттерны - задротство, программирование ради программирования. Всегда нужно исходить из задач.

>если нет плюсов.. я бы сменил работу, на ту, где нет Си

Слабак!:)


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
boostcoder
Дата 8.9.2010, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 20
Всего: 110



Цитата(djamshud @  8.9.2010,  16:33 Найти цитируемый пост)
Он делает ровно то, что должен уметь делать класс-дата

делать то он делает. но все равно blob. будь у вас хорошие познания в с++ и паттернах, вы бы поняли что это blob.

Цитата(djamshud @  8.9.2010,  16:33 Найти цитируемый пост)
паттерны, антипаттерны - задротство

какой кочмар smile 
о чем же тогда пишут Саттер, Александреску, Страуструп... с вами все ясно. продолжать не вижу смысла. и это вы мне говорите про зазнайство? smile

Добавлено через 4 минуты и 28 секунд
Цитата(djamshud @  8.9.2010,  16:33 Найти цитируемый пост)
 Всегда нужно исходить из задач

существуют стандарты по написанию кода с++. и несоблюдение этих стандартов, частенько(почти всегда) заводит проект в стадию _невозможности_поддержки_/_невозможности_развития_.
так же, многие конторы, просто не позволят писать так, как тебе хочется/можется/нравиться. и я с этим абсолютно согласен.
PM WWW   Вверх
djamshud
Дата 8.9.2010, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 4
Всего: 39



boostcoder,

Саттер - не читал;
Александреску - читал, осуждаю; мужик на шаблонах свихнулся;
Страуструп - читал, в общем одобряю.

>будь у вас хорошие познания в с++ и паттернах, вы бы поняли что это blob.
>с вами все ясно. продолжать не вижу смысла

/me пошел плакать.

>и это вы мне говорите про зазнайство?

А чо не так? :)


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
segadir
Дата 8.9.2010, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 7.9.2010

Репутация: нет
Всего: нет



не мужики, я не лезу вас разьединять, но может поможите доработать функцию?
если каждый по своему её напишет мне от этого только выгода.
PM MAIL   Вверх
boostcoder
Дата 8.9.2010, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 20
Всего: 110



Цитата(djamshud @  8.9.2010,  16:33 Найти цитируемый пост)
QDate != Blob.

глянул на доку... и, собственно соглашусь, не blob.
просто вспомнился QString.
PM WWW   Вверх
djamshud
Дата 8.9.2010, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 4
Всего: 39



boostcoder,

>просто вспомнился QString.

Это да. Тоже считаю его монстроузным.

>существуют стандарты по написанию кода с++. и несоблюдение этих стандартов, частенько(почти всегда) заводит проект в стадию _невозможности_поддержки_/_невозможности_развития_.

Ну глупость же пишите. Все зависит от умения проектировать свои решения.

>так же, многие конторы, просто не позволят писать так, как тебе хочется/можется/нравиться. и я с этим абсолютно согласен.

Это плохие конторы, и мне очень жаль, что вам приходится работатать именно в них. Постановка производства софта на конвеер экономически, конечно, выгодно, но без пространства для маневра не будет творцов, а без творцов - шедевров.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Страницы: (4) Все 1 [2] 3 4 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0574 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.