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;
}

★★
Ответ на: комментарий от Deleted

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

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

cruz7 ★★
() автор топика

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

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

mky ★★★★★
()

time_t ticks;

ticks = time(NULL);

заменить на:

time_t ticks = time(NULL);

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

imp ★★
()

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

Eddy_Em ☆☆☆☆☆
()

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

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

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

Dimanc ★★
()
Ответ на: комментарий от Eddy_Em

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


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

cruz7 ★★
() автор топика
Ответ на: комментарий от hello_world

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

отчего же? Хочу получить размер массива, imho sizeof лучше всего подходит.

cruz7 ★★
() автор топика
Ответ на: комментарий от cruz7

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


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

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

cruz7 ★★
() автор топика

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

ugoday ★★★★★
()
Ответ на: комментарий от cruz7

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

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