Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wczytanie polecenia do tablicy wskaźników zamiast do bufora

Ostatnio zmodyfikowano 2019-07-01 19:44
Autor Wiadomość
aksen
Temat założony przez niniejszego użytkownika
Wczytanie polecenia do tablicy wskaźników zamiast do bufora
» 2019-07-01 16:03:19
Witam

mamy taki fragment kodu w jakiejś funkcji:

C/C++
char buff[ 257 ];
char ** argv;

while( 1 )
{
    fgets( buff, sizeof( buff ), stdin );
}


fgets pobiera z konsoli do buff np. taki tekst:

"123 456   789 AbcdefghI JklmnO P Z"


czy istnieje w C jakaś funkcja która potrafi
taki tekst wczytać do argv jako do tablicy parametrów
tak aby:

argv[0] = "123"
argv[1] = "456"
itd.

(analogicznie jak jak parametry z linni poleceń przekazane do funkcji main)


Czy muszę coś takiego oprogramować "na piechotę"???
P-174866
pekfos
» 2019-07-01 16:56:17
(analogicznie jak jak parametry z linni poleceń przekazane do funkcji main)
Tym dodatkiem tylko zaciemniłeś sprawę. Chcesz podzielić napis na słowa (tak jak to zademonstrowałeś), czy faktycznie sparsować linię polecenia tak jak do main(), co jest bardziej rozbudowane, niż tylko dzielenie po spacji.
Na co mają wskazywać te wskaźniki? Na fragmenty źródłowego napisu, czy kopie tych fragmentów? Jeśli kopie, to jak zaalokowane?
P-174867
aksen
Temat założony przez niniejszego użytkownika
» 2019-07-01 17:30:28
Obojętnie.

Nie pytam jak to napisać (bo napisać sobie mogę)
tylko czy da się użyć jakiejś gotowej funkcji (żeby ułatwić sobie życie)
P-174868
pekfos
» 2019-07-01 19:44:38
Możesz spróbować strtok(), ale jeśli nie możesz użyć bezpiecznych wersji tej funkcji, to lepiej napisz sobie to samemu.
https://stackoverflow.com​/questions/5999418​/why-is-strtok-considered-unsafe

Dla autentycznego parsowania linii polecenia jest CommandLineToArgvW(), ale w WinAPI i tylko dla wide stringów.
https://stackoverflow.com​/questions/291424​/canonical-way-to-parse-the-command-line-into-arguments-in-plain-c-windows-api
P-174869
« 1 »
  Strona 1 z 1