Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
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í.

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
Avatar
David Novák
Tvůrce
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.