[закрыто] непонятки
pubuntu:~$ gcc test.c
pubuntu:~$ ./a.out
INSERT INTO meas VALUES (0,'-1215835588--1215794847--1080685264 1:-1215838120:8',0, 0, 0, 0, "tt");
Нашёл, где ошибся. В текст программы вкралась ещё одна переменная korr1, на этот раз типа integer.
#include <linux/videodev2.h>
ТОЛЬКО ГЛОБАЛЫ! ТОЛЬКО ХАРДКОР!
Я ж не всю прогу скопировал. Там в других функциях тв-тюнер мучается, а в конкретно эту указатель на картинку одного кадра приходит.
sprintf(str1,"%g-%d.%02d.%02d-%d-%02d-%02d.jpg",freq[chan],1900+tm1.tm_year,tm1.tm_mon,tm1.tm_mday,tm1.tm_hour,tm1.tm_min,tm1.tm_sec);
Используй strftime.
Используй snprintf, не используй sprintf так как она не безопасна.
printf ("mysql insert error\n");
Ошибки принято выводить в stderr, fprintf делай туда.
memcpy(&tm1,localtime(&tim1),sizeof(tm1));
Ахтунг какой-то, зачем memcpy? Что хотел — не понятно.
она не безопасна.Что значит не безопасна?
memcpy(&tm1,localtime(&tim1),sizeof(tm1));
Что хотел — не понятно.
В переменной tim1 - текущее время в секундах, отсчёт от 70 года. localtime преобразует его в структуру, где есть годы, месяцы, дни, часы, минуты и секунды и её результат я копирую в tm1.
Ошибки принято выводить в stderr, fprintf делай туда.
Это отладка, при ней мне удобнее сразу видеть что выполнилось, а что нет.
Что значит не безопасна?
sprintf потенциально может попытаться писать за пределами твоего буфера. даже если ты наперед знаешь что год будет занимать 4 позиции в строке (что будет верно только ближайшие ~8000 лет), использовать snprintf - хорошая практика.
Это отладка, при ней мне удобнее сразу видеть что выполнилось, а что нет.
по дефолту в консоли stderr и так идет на экран. а при желании можно отделить желток от белка.
А это то нахуя?Прогу допилил, если вдруг интересно кому.
#include <linux/videodev2.h>
Раз в 5 минут по кронтабу запускается, сканирует n каналов телевидения, оценивает уровень, делает скриншоты, сравнивает их со снятыми 5 минут назад (для отлавливания замершей картинки).
Результат можно смотреть здесь: http://83.151.9.102/tv/statall.php
Спасибо за полезные советы.
Оставить комментарий
stream2008
Нижеприведённый код почему-то упорно выводит (на экран и в базу) вот такое:INSERT INTO meas VALUES (0,'2012-8-27 14:21:39',10, 84.1126, 56.9707, 4.88713e-270, "(null)");
Хотя вместо последнего "null" ведь явно должно быть "tt"?!
А если вместо "tt" аргументом в sprintf ставлю str1 то вообще вылетает с надписью ошибка сегментации.
Никак не могу понять, что я делаю не так?