Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Pouze tento týden sleva až 80 % na e-learning týkající se C a C++. Zároveň využij akce až 80 % zdarma při nákupu e-learningu - více informací.
c week

Diskuze: mktime

Aktivity
Avatar
Matej
Člen
Avatar
Matej:31.10.2015 22:50

Zdravím :) mám program ktorý by mal načítať znaky s reťazca premeniť ich na číslo a vypísať ako dátum len žial nefunguje :D prosím vás poradil by mi niekto akým spôsobom to mám urobiť aby to fungovalo ? :) Ďakujem

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

int main()
{
        char str[50];
    struct tm strtime;
    time_t timeoftheday;


        scanf("%40s", str);

        int rok = atoi(str[0]+str[1]+str[2]+str[3]);
        int mesiac = atoi(str[4]+str[5]);
        int den = atoi(str[6]);


        strtime.tm_year = rok;
    strtime.tm_mon = mesiac;
    strtime.tm_mday = den;
    strtime.tm_hour = 02;
    strtime.tm_min = 30;
    strtime.tm_sec = 38;
    strtime.tm_isdst = 0;

    timeoftheday = mktime(&strtime);
    printf(ctime(&timeoftheday));

    return 0;
        }
 
Odpovědět
31.10.2015 22:50
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
David Novák
Redaktor
Avatar
Odpovídá na Matej
David Novák:31.10.2015 23:40

Ehm.. Sčítat znaky je většinou blbost ;)

Navíc fce atoi očekává ukazatel na znak (což je například str[4] nebo jen str, který ukazuje na první znak) a "žere" znaky až do \0, které se následně pokusí převést na číslo.

Potřebuješ nějakou dočasnou proměnnou, kam hodíš znaky, které chceš převést a korektně ten string zakončíš. Ten pak dáš převodní fci (doporučuji ovšem použít strtol, protože u atoi moc nepoznáš, když nastala chyba v převodu).

Nahoru Odpovědět
31.10.2015 23:40
Chyba je mezi klávesnicí a židlí.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.