[ milicapet @ 03.02.2010. 21:42 ] @
Na slici je sve napisano, ako moze neko da mi pomogne oko ovog zadatka, posto sam pocetnik.



[Ovu poruku je menjao milicapet dana 03.02.2010. u 23:36 GMT+1]

[Ovu poruku je menjao milicapet dana 03.02.2010. u 23:36 GMT+1]
[ X Files @ 04.02.2010. 07:13 ] @
@milicapet

Pitanja koja se očekuju na ovom forumu su:

"Kako prikazati sadržaj trenutnog direktorijuma", "Kako se vrši parsiranje (raščlanjivanje) unetog teksta, da bi se razdvojila komanda od argumenata", "Kako se menja tekući direktorijum", "Kako se briše ekran", itd...

I pre svega, da bi neko pomogao, treba pokazati sopstvenu inicijativu, tj.započeti zadatak...

U ovom obliku, pitanje je pre za forum IT berza poslova.


Ovakve teme se po pravilu brišu, ali pošto ti je ovo prva poruka ostavićemo ovako u nadi neće li ti neko pomoći nekim konkretnim linkom ili se ne nađe neko ko ima bilo šta gotovo vezano za pomenuti zadatak.

EDIT X Files : Preimenovao sam naslov teme.
[ milicapet @ 05.02.2010. 12:11 ] @
Evo uradila sam funkciju za brisanje datoteke u ovom slucaju to je datoteka "a" unutar otvorenog direktorijuma "." .

Code:
#include <stdio.h>
#include <dirent.h>
int  main()
{
        
        DIR *dir;
        char buf[256];

        dir = opendir(".");

       
                
                sprintf(buf, "%s/%s", ".", "a");
                remove(buf);
        
       

}



Takodje sam uradila i funkciju za brisanje CLR.
Code:
#include <stdlib.h>
int main(void)
{
system("clear");
}



Kako sad da uradim ovo trenutni_direktorijum:_ pa kad unesem RM DAT da pozove ovu funkciju za brisanje. Probala sam sa grananjem ali mi ne ide :(
[ Goran Rakić @ 05.02.2010. 12:43 ] @
Program treba da radi u beskonačnoj petlji. U svakom koraku petlje čita se ulazna naredba. Onda radiš leksičku analizu te naredbe i pozivaš odgovarajuće funkcije (ne programe). Korišćenje system funkcije je ovde varanje jer system funkcija koristi već gotov shell da izvršava druge programe.

Dakle u pseudo kodu:

Code:

int obrisi(char *arg) {
  // proveri da li datoteka *arg postoji funkcijom stat i
  // pozovi brisanje uz proveru povratne vrednosti
}

...

int main(int argc, char *argv[]) {
 
  char line[1024], *tmp;

  while(1) {
  
      char *currdir;
      currdir = getcwd(NULL, 0);

      printf("%s: ", currdir);
      free(currdir);
      fflush(stdout);

      if( (tmp = fgets(line, 1023, stdin)) == NULL) {
          break;
          // nema nove komande ili je doslo do greske,
         // opciono proveriti errno i ispisati gresku
      }
      
     // sada analiziraj unos u line i pozivaj odgovarajuce ranije napisane funkcije
     // korisna funkcija je strtok iz string.h

  }

  return 0;
}


Korisna pomoć pri radu su ti man stranice, ako ih nemaš instalirane na računaru možeš na google-u da kucaš "man <ime funkcije>", npr. man strtok. Od literature preporučujem ti APUE knjigu, ako je nema u biblioteci fakulteta, može se pronaći kopija na Internetu.
[ milicapet @ 06.02.2010. 16:31 ] @
Jel moze neko da mi objasni kako se provjerava ta naredba. Pokusala sam sa strcmp() ali mi ne ide.

Znaci obezbjedila sam unos komande. I dosla do provjere da li je npr uneseno "cd" ako jeste da pozove funkciju za mjenjanje direktorijuma.