NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
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.