Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Marcel Borna 03. 02. 2011, 12:26:31
-
Dobrý den,
zkoušel jsem tento kód:
#include <time.h>
#include<direct.h>
#include<dir.h>
int main (void)
{
time_t rawtime;
struct tm * numberofweek;
char buffer [80],j;
int i;
time ( &rawtime );
numberofweek = localtime ( &rawtime );
strftime (buffer,80,"Now it's %U:.",numberofweek);
puts (buffer);
i=(int)numberofweek;
switch(i)
{
case 1:mkdir("C:/Documents and Settings/doid/Plocha/t1");
break;
case 2:mkdir("C:/Documents and Settings/doid/Plocha/t2");
break;
case 3:mkdir("C:/Documents and Settings/doid/Plocha/t3");
break;
default:mkdir("C:/Documents and Settings/doid/Plocha/t54");
break;
}
return 0;
}
Pokoušel jsem se přetypovat timeinfo tak, aby mi šel switch, ale ten nevyhodnotí žádnou z nabízených konstant a přejde proto rovnou k defaultní hodnotě.Chtěl bych poprosit o vysvětlení, proč se to děje a poradit způsob,jak to napravit.Myslel jsem si, že číslo týdne bude v přetypovaném i, ale asi není.Nevím, jestli jsem správně pochopil způsob přetypování.
Chci se jen pokusit při změně čísla týdne vytvořit prázdnou složku pojmenovanou číslem týdne.
Moc díky za pomoc.
M.
-
nebolo by to jednoduchsie takto?
kod a la bash:
TYZDEN=cislo_tyzdna;
DIRECTORY = "c:\\Documents and ...\\t${TYZDEN}";
if [[ ! -d "$DIRECTORY" ]]; then mkdir -p "$DIRECTORY"; fi
To by mohlo fungovat pod cygwin-om, a tipujem ze v C tiez nebude problem to nakodit :-) Samozrejme predpokladam ze funkcia cislo_tyzdna() mi vrati cislo tyzdna ;-)
-
samozrejme pre bash treba dat
DIRECTORY="c:\\Documents and ...\\t${TYZDEN}";
(medzery vyssie su nespravne)
-
Nevim presne, co chcete docilit, ale pretypovavani ukazatele na int ta spravna cesta asi nebude ;)
struct tm * numberofweek;
...
i=(int)numberofweek;
-
Pozri sa nato cez debuger ako ta hodnota vypada. Urcite pochopis kde je problem.
PS: Takto by to spavilo 90% ludi co ti budu radit.
-
Díky všem. Můžeš mě nějak nasměrovat na to, jak se mám na tu hodnotu přes debuger podívat?
M.
-
Pozri sa nato cez debuger ako ta hodnota vypada. Urcite pochopis kde je problem.
PS: Takto by to spavilo 90% ludi co ti budu radit.
Debugger je v tomto pripade kanon na vrabce, tady staci obycejna PV (KV) metoda ;)
-
Nevim presne, co chcete docilit, ale pretypovavani ukazatele na int ta spravna cesta asi nebude ;)
struct tm * numberofweek;
...
i=(int)numberofweek;
Přesně tak.
Asi bys měl v tom switchi použít prvek tm_wday, takže nějak takto:
switch (numberofweek->tm_wday)
-
Co je PV (KV) metoda?
Jinak, zkouším to switch (numberofweek->tm_wday),krokoval jsem to, všechno ok, ale nevytvoří se mi složka.M.
-
Co je PV (KV) metoda?
Jinak, zkouším to switch (numberofweek->tm_wday),krokoval jsem to, všechno ok, ale nevytvoří se mi složka.M.
Pozriem-vidim metoda (kouknu-vidim) ;)
Nevytvori se slozka nahodou proto, ze je ctvrtek, a hodnoty jdou jenom do tri? Cislo tydne v roku v tm strukture neni, je potreba si ho spocitat, a to zalezi i od metody (treba outlook pouziva jinou metodu nez ISO 8601).
-
Koukám, že to fakt není jednoduché.
M.