Válí se ti projekty v šuplíku? Dostaň je mezi lidi a získej cool tričko a body na profi IT kurzy v soutěži ITnetwork summer 2017!
Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)

Diskuze: mktime

C a C++ C a C++ mktime

Aktivity (1)
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
Tým ITnetwork
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.