Как правильно сравнивать даты в формате YYYY-MM-DD hh-mm-ss в конструкции if () {}.
>Как правильно сравнивать даты в формате YYYY-MM-DD hh-mm-ss в конструкции if ()
>{}.
Преобразовать в UNIX вемя и сравнивать количество секунд.
man mktime
>>Как правильно сравнивать даты в формате YYYY-MM-DD hh-mm-ss в конструкции if ()
>>{}.
>Преобразовать в UNIX вемя и сравнивать количество секунд.
>man mktimeА в каком виде у тебя эта дата? Если в строке, то я думаю strcmp() будет их сравнивать вполне корерктно.
>>>Как правильно сравнивать даты в формате YYYY-MM-DD hh-mm-ss в конструкции if ()
>>>{}.
>>Преобразовать в UNIX вемя и сравнивать количество секунд.
>>man mktime
>
>А в каком виде у тебя эта дата? Если в строке, то
>я думаю strcmp() будет их сравнивать вполне корерктно.
В char.
>>>>Как правильно сравнивать даты в формате YYYY-MM-DD hh-mm-ss в конструкции if ()
>>>>{}.
>>>Преобразовать в UNIX вемя и сравнивать количество секунд.
>>>man mktime
>>
>>А в каком виде у тебя эта дата? Если в строке, то
>>я думаю strcmp() будет их сравнивать вполне корерктно.
>
>
>В char.Ты конечно же имеешь ввиду char* ? ;)
Гут. Просто сравнить 2 строки, думаю, будет быстрее, чем парсить их для конвертания в unixtimestamp. А, учитывая формат даты (именно YYYY-MM-DD hh-mm-ss), это будет вполне корректным сравнением дат.
>>>>Как правильно сравнивать даты в формате YYYY-MM-DD hh-mm-ss в конструкции if ()
>>>>{}.
>>>Преобразовать в UNIX вемя и сравнивать количество секунд.
>>>man mktime
>>
>>А в каком виде у тебя эта дата? Если в строке, то
>>я думаю strcmp() будет их сравнивать вполне корерктно.
>
>
>В char.Что-то новенькое. Может быть char[] (char*)?!
>>>>>Как правильно сравнивать даты в формате YYYY-MM-DD hh-mm-ss в конструкции if ()
>>>>>{}.
>>>>Преобразовать в UNIX вемя и сравнивать количество секунд.
>>>>man mktime
>>>
>>>А в каком виде у тебя эта дата? Если в строке, то
>>>я думаю strcmp() будет их сравнивать вполне корерктно.
>>
>>
>>В char.
>
>Что-то новенькое. Может быть char[] (char*)?!Наскока я помню (чесно говоря, на С давно уже не писал), char[] есть ничто иное как указатель на char, т.е. char*. Или я не прав?!
>>Что-то новенькое. Может быть char[] (char*)?!
>
>Наскока я помню (чесно говоря, на С давно уже не писал), char[]
>есть ничто иное как указатель на char, т.е. char*. Или я
>не прав?!Домашнее задание:
#include <string.h>
int main(int argc, char *argv[]) {
char s[80] = "Hello";
strcat(s, ", World!");
}#include <string.h>
int main(int argc, char *argv[]) {
char *s = "Hello ";
strcat(s, ", World!");
}Найти 10-ть отличий и понять, почему первое работает, а второе - нет.
>>>Что-то новенькое. Может быть char[] (char*)?!
>>
>>Наскока я помню (чесно говоря, на С давно уже не писал), char[]
>>есть ничто иное как указатель на char, т.е. char*. Или я
>>не прав?!
>
>Домашнее задание:
>
>#include <string.h>
>int main(int argc, char *argv[]) {
> char s[80] = "Hello";
>
> strcat(s, ", World!");
>}
>
>#include <string.h>
>int main(int argc, char *argv[]) {
> char *s = "Hello
>";
> strcat(s, ", World!");
>}
>
>Найти 10-ть отличий и понять, почему первое работает, а второе - нет.
>Нашел место поумничать?!
char s[80] <==> char* = new char(80);
За исключением того что память выделяется в разных местах, но это не имеет отношения к исходному вопросу.
>>>>Что-то новенькое. Может быть char[] (char*)?!
>>>
>>>Наскока я помню (чесно говоря, на С давно уже не писал), char[]
>>>есть ничто иное как указатель на char, т.е. char*. Или я
>>>не прав?!
>>
>>Домашнее задание:
>>
>>#include <string.h>
>>int main(int argc, char *argv[]) {
>> char s[80] = "Hello";
>>
>> strcat(s, ", World!");
>>}
>>
>>#include <string.h>
>>int main(int argc, char *argv[]) {
>> char *s = "Hello
>>";
>> strcat(s, ", World!");
>>}
>>
>>Найти 10-ть отличий и понять, почему первое работает, а второе - нет.
>>
>
>Нашел место поумничать?!Это Вы, Пан, умничаете. Посмотрите первую, строчку, которая до сих пор идет в квотировании. А теперь turnon(&brain);
>char s[80] <==> char* = new char(80);
>>>Наскока я помню (чесно говоря, на С давно уже не писал)
Хреновые у Вас познания в Си. new таки пережитки плюсавого.
>За исключением того что память выделяется в разных местах, но это не
>имеет отношения к исходному вопросу.Опять таки пернули в лужу. В первом сключае char[] она размещается в стеке, а в другом в куче. А в целом, конечно, можно продолжать мести пургу...только в одиночку.
>>>>>Что-то новенькое. Может быть char[] (char*)?!
>>>>
>>>>Наскока я помню (чесно говоря, на С давно уже не писал), char[]
>>>>есть ничто иное как указатель на char, т.е. char*. Или я
>>>>не прав?!
>>>
>>>Домашнее задание:
>>>
>>>#include <string.h>
>>>int main(int argc, char *argv[]) {
>>> char s[80] = "Hello";
>>>
>>> strcat(s, ", World!");
>>>}
>>>
>>>#include <string.h>
>>>int main(int argc, char *argv[]) {
>>> char *s = "Hello
>>>";
>>> strcat(s, ", World!");
>>>}
>>>
>>>Найти 10-ть отличий и понять, почему первое работает, а второе - нет.
>>>
>>
>>Нашел место поумничать?!
>
>Это Вы, Пан, умничаете. Посмотрите первую, строчку, которая до сих пор идет
>в квотировании. А теперь turnon(&brain);
>
>>char s[80] <==> char* = new char(80);
>
>>>>Наскока я помню (чесно говоря, на С давно уже не писал)
>
>Хреновые у Вас познания в Си. new таки пережитки плюсавого.Вот тут я соглашусь. В чистом Си не силен.
>>За исключением того что память выделяется в разных местах, но это не
>>имеет отношения к исходному вопросу.
>
>Опять таки пернули в лужу. В первом сключае char[] она размещается в
>стеке, а в другом в куче. А в целом, конечно, можно
>продолжать мести пургу...только в одиночку.А разве стек и куча - не разные места?! Я про это и говорил.
>>>>>Что-то новенькое. Может быть char[] (char*)?!
>>>>
>>>>Наскока я помню (чесно говоря, на С давно уже не писал), char[]
>>>>есть ничто иное как указатель на char, т.е. char*. Или я
>>>>не прав?!
>>>
>>>Домашнее задание:
>>>
>>>#include <string.h>
>>>int main(int argc, char *argv[]) {
>>> char s[80] = "Hello";
>>>
>>> strcat(s, ", World!");
>>>}
>>>
>>>#include <string.h>
>>>int main(int argc, char *argv[]) {
>>> char *s = "Hello
>>>";
>>> strcat(s, ", World!");
>>>}
>>>
>>>Найти 10-ть отличий и понять, почему первое работает, а второе - нет.
>>>
>>
>>Нашел место поумничать?!
>
>Это Вы, Пан, умничаете. Посмотрите первую, строчку, которая до сих пор идет
>в квотировании. А теперь turnon(&brain);
>
>>char s[80] <==> char* = new char(80);
>
>>>>Наскока я помню (чесно говоря, на С давно уже не писал)
>
>Хреновые у Вас познания в Си. new таки пережитки плюсавого.
>
>>За исключением того что память выделяется в разных местах, но это не
>>имеет отношения к исходному вопросу.
>
>Опять таки пернули в лужу. В первом сключае char[] она размещается в
>стеке, а в другом в куче. А в целом, конечно, можно
>продолжать мести пургу...только в одиночку.
Гениально!
вы перевернули мир, а раньше считал, что конструкция
char *s = "Hello"; создает масив длиной в 6 битов а оказалось это просто розмещается в куче, буду знать, а то чтобы масив вообще розмещать в стеке, ГАГАГАГА, я представляю масив
"ПЕРВЫМ ПРИШЕЛ ПОСЛЕДНИМ ВЫШЕЛ", спасибо, буду знать
http://www.opennet.me/openforum/vsluhforumID9/5218.html
Правда на С++
>char *s = "Hello"; создает масив длиной в 6 битов а оказалосьШкольный курс информатики: БИТ != БАЙТ.
>"ПЕРВЫМ ПРИШЕЛ ПОСЛЕДНИМ ВЫШЕЛ", спасибо, буду знать
Массив - это последовательность. Последовательнисти основательно изучаются на первом курсе университета/института. Всё в Ваших руках...
>>char *s = "Hello"; создает масив длиной в 6 битов а оказалось
>
>Школьный курс информатики: БИТ != БАЙТ.
>
>>"ПЕРВЫМ ПРИШЕЛ ПОСЛЕДНИМ ВЫШЕЛ", спасибо, буду знать
>
>Массив - это последовательность. Последовательнисти основательно изучаются на первом курсе университета/института. Всё
>в Ваших руках...
не стоит чеплятся за опечатки насчет ,бита, но то что вы написано просто гон
>не стоит чеплятся за опечатки насчет ,бита,++
>> "ПЕРВЫМ ПРИШЕЛ ПОСЛЕДНИМ ВЫШЕЛ", спасибо, буду знать
FILO - это тоже очепятка по Вашему?!
Последним пришёл первым вышел - LIFO
Первым пришёл первым вышел - FIFOА что за нововведение с FILO?
Батенька, да у Вас Очепятки получается на каждом шагу. Читаем самостоятельно, что люди понимают под LIFO и под массивом. Ключевой вопрос, возможно обращение произвольному элементу в LIFO/FIFO? А в массиве? Результат: идем в садик.
> но то что вы написано
>просто гонАргументируешь? Желательно кодом.
>>не стоит чеплятся за опечатки насчет ,бита,
>
>++
>
>>> "ПЕРВЫМ ПРИШЕЛ ПОСЛЕДНИМ ВЫШЕЛ", спасибо, буду знать
>
>FILO - это тоже очепятка по Вашему?!
>
>Последним пришёл первым вышел - LIFO
>Первым пришёл первым вышел - FIFO
>
>А что за нововведение с FILO?
>
>Батенька, да у Вас Очепятки получается на каждом шагу. Читаем самостоятельно, что
>люди понимают под LIFO и под массивом. Ключевой вопрос, возможно обращение
>произвольному элементу в LIFO/FIFO? А в массиве? Результат: идем в садик.
>
>
>> но то что вы написано
>>просто гон
>
>Аргументируешь? Желательно кодом.Вы хотите сказать что первый елемент уйдет не последним?
Вы просто чепляетесь за слова,
я просто росмеялся когда уведил это "В первом сключае char[] она размещается в стеке, а в другом в куче". и все, Какое отношение все это имеет к стеку? Вот в чом суть.
>Ключевой вопрос, возможно обращение
>произвольному элементу в LIFO/FIFO? А в массиве? Результат: идем в садик.
я же то и имел ввиду, можно конечно же реализовать масив ввиде стека, но это смешно, хотя
по вашему char[] тоже и делает.Что теперь не так?
Господа, прекратите, пожалуйста, флейм. Что вы пытаетесь друг другу доказать?
Чтобы развеять неясности, внесу свои пять копеек.Говоря о стеке, chip подразумевал сегмент памяти, в котором размещаются локальные переменные (например массив, объявленный в функции как char str[80]), а не способ хранения набора элементов, как подумал господин, пожелавший остаться безымянным. Кучей (heap) называют сегмент памяти, в котором размещаются динамически выделяемые области (например, функцией malloc(3) в C). Раз уж зашёл разговор о сегмантах памяти, то ещё бывает сегмент кода, в котором находятся инструкции программы и сегмент данных, в котором размещаются глобальные переменные, константы и пр. (то есть области, размер которых известен до старта программы). Всё это, разумеется, подробно описано во множестве мест, так что любой интересующийся (если вдруг такие тут окажутся) сможет легко это найти.
К разговору выше: что касается char[] и char*, то в использовании (если исключить выделение/освобождение памяти), особенно в контексте вопроса, они в общем-то похожи. Точнее, больше похожи char[] и char *const. Но всё это действительно не имеет отношения к вопросу. Да и спор-то возник только из-за желания поспорить. И из-за того, что GeKa ошибочно принял коментарий chip'а (5-й) на свой адрес, хотя он был адресован автору темы.
А по сути: действительно, если даты имеются в строковом представлении и формат их именно YYYY-MM-DD hh-mm-ss, то можно сравнить две строки, так что Geka предложил правильное и остроумное решение, хотя и зависящее от формата дат.
И не нужно ссориться, мы же здесь чтобы помочь друг другу, а не чтобы показать, кто круче.