Avatar
Matej Bandik
Člen
Avatar
Matej Bandik:

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 Bandik
David Novák:

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.