LINUX.ORG.RU

покритикуйте функцию


0

0

Понадобилась небольшая функция печати даты, вот компиляемый кусок кода (gcc -std=c99 -pedantic -W -Wall -Wextra). Покритикуйте plz реализацию shotime().

Спасибо.

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

static int
showtime(char buf[], const size_t len)
{
time_t ticks;

ticks = time(NULL);
return (snprintf(buf, len, "%.24s\n", ctime(&ticks)));
}

int main(void)
{
char buf[30];

memset(buf, '\0', sizeof buf);
showtime(buf, sizeof buf);
printf("%s\n", buf);

return 0;
}

★★

Re: покритикуйте функцию

time() может вернуть ((time_t) -1) при ошибке.

А вообще, зачем всё это?

Deleted ()
Ответ на: Re: покритикуйте функцию от Deleted

Re: покритикуйте функцию

> time() может вернуть ((time_t) -1) при ошибке. спасибо, это и ctime() не учел.

> А вообще, зачем всё это? понадобилось выводить дату. Наверное велосипед, но быстро другое не пришор в голову.

cruz7 ★★ ()

Re: покритикуйте функцию

А что означает "." в спецификаторе формата?

А в целом, функция странная, нет проверки результата snprintf, то есть влезла ли дата в buf или нет.

mky ★★★★★ ()

Re: покритикуйте функцию

time_t ticks;

ticks = time(NULL);

заменить на:

time_t ticks = time(NULL);

Ну и все вышесказанное + много еще другого.

imp ★★ ()

Re: покритикуйте функцию

А локализация где? )

devinull ★★ ()

Re: покритикуйте функцию

Лучше, все-таки, date. А если уж так хочется в свою программу вставить - выдираем код из исходников date.

Eddy_Em ☆☆☆☆☆ ()

Re: покритикуйте функцию

>Покритикуйте plz реализацию shotime().

Реализация shotime() отсутствует (:

PS и да, ты либо тролль, либо идиот.

Dimanc ★★ ()
Ответ на: Re: покритикуйте функцию от Eddy_Em

Re: покритикуйте функцию

> А локализация где? )
> Лучше, все-таки, date. А если уж так хочется в свою программу вставить - выдираем код из исходников date.


я это делал в рамках изучения языка, поэтому многих проверок и пр. не предусмотрено.

cruz7 ★★ ()
Ответ на: Re: покритикуйте функцию от cruz7

Re: покритикуйте функцию

> sizeof buf
> очевидно не совсем то чего выхотите


А вообще вы правы, чтобы получит количество элементов, правильнее было бы так:

((sizeof buf) / (sizeof buf[0]))

cruz7 ★★ ()

Re: покритикуйте функцию

Твоя функция --- гавно. И сам ты такой же. Покритиковал?

ugoday ★★★★★ ()
Ответ на: Re: покритикуйте функцию от cruz7

Re: покритикуйте функцию

>Xочу получить размер массива
какого епт массива? размер Указателя вы получаете, откройте для себя магическую команду man, в частности man memset, тама вы увидите что то про байты

hello_world ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.