Zdravím, mám opravdu velmi záhadný problém s C++. Mám třídu Directory, která obsahuje metody AddDirectory(char *name), která přidá do adresáře nový adresář (de facto podadresář). Dále mám metodu PrintList(), která vypíše všechny adresáře, které aktuální adresář obsahuje. Všechno funguje jak má, pokud kód vypadá takto:
currentPath->AddDirectory("Slozka1"); // currentPath je ukazatel na aktuální adresář
currentPath->AddDirectory("Slozka2");
currentPath->AddDirectory("Slozka3");
currentPath->AddDirectory("Slozka4");
currentPath->PrintList();
Vypíše se toto:
Slozka1 <dir>
Slozka2 <dir>
Slozka3 <dir>
Slozka4 <dir>
Pokud kód napíšu takto:
char *name[30];
while (gets(name) != string("exit"))
currentPath->AddDirectory(name);
currentPath->PrintList();
Vypíší se adresáře, nicméně všechny se jmenují exit. Přitom žádný adresář s názvem exit se nevytváří, když jsem celý program prokrokoval, do konstruktoru adresáře se vždy předá správný název, nicméně při vypisování se záhadně u všech objeví, že name je exit.
Opravdu nemám nejmenší tušení proč se to děje, protože pokud adresáře vytvářím "natvrdo" v kódu, funguje to. Pokud někdo máte jakýkoliv nápad, budu moc rád za odpověď. Já osobně podezřívám funkci gets, ale zkoušel jsem i cin.get. Opravdu jsem z toho zmatený.