Usuwanie znaku z łancucha

Usuwanie znaku z łancucha
BO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 99
0

Witam,
Wczytuje z klawiatury linie a następnie dzielę ja na argumenty. Mam stworzoną tablice z argumentami

Kopiuj
char *arg[10]

i funkcje która ma sprawdzać czy ostatnim argumentem jest znak '&', i jeżeli jest to ma usunąć ten argument z tablicy i zwrócić 1. Funkcja wygląda tak:

Kopiuj
int proces_w_tle(char **arg, int n){
    int i=0;
    for(i=0 ; i<n; i++)
        if(!strcmp(arg[i],"&")){
            *arg[i]='\0';
            return 1;
        }
} 

No i w tej chwili ta funkcja usuwa mi znak ale np. jak mam jeszcze jakieś argumenty za & to je wypisuje, a ja chcę zrobić żeby po odczytaniu tego znaku usuneła go i tablica kończyła się w tym miejscu. Jak coś takiego zrobić?

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0

Wywal tą funkcję i wyświetlaj zawsze tak:

Kopiuj
  for(i=0;(i<n)&&(strcmp(arg[i],"&"));++i) printf("%s\n",arg[i]);
BO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 99
0

Bo chodzi mi oto że jak wywołam przez execvp("ls",arg) "ls" to jak mam argument & w tablicy to mi nie działa...

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
void proces_w_tle(char **arg,int n)
  {
   int i=0;
   for(i=0;i<n;++i) if(!strcmp(arg[i],"&")) arg[n=i]=NULL;
  }

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.