2009-08-01 13 views
5

Właśnie zaczynam programować i przechodzę K & R, aby spróbować i nauczyć się C. Dostałem się do sekcji na temat argumentów linii poleceń (5.10), ale teraz jestem zakłopotany. Za każdym razem, gdy próbuję otworzyć program napisany z argumentami wiersza poleceń, powiedziano mi, że plik X, X będący argumentem, nie istnieje.Początkujący robi K & R

`gcc -o znaleźć find.c

otwarte znaleźć testu

pliku/Dokumenty/Learning_C/test nie exist.`

Wszelkie sugestie? Dzięki

Odpowiedz

3

Jakiego systemu używasz? W Unix/Linux kompilacji & uruchomić plik wykonywalny poprzez:

gcc -o find find.c 
./find test 

As others have noted, kiedy prefiks plik binarny z „./”, tam przyzwyczajenie być żadnych konfliktów nazewnictwa. Jednakże, jeśli wykonane find dostępną w $PATH, może masz jakieś konflikty z find i test --standard programów z większości * nix dystrybucje ... Może można wybrać bardziej konkretne nazwy (tj ./myFind testArg)

+0

Prefiks "./" * jest * ważny, przynajmniej w systemie Linux, jako bieżący folder "." zwykle nie jest częścią zmiennej PATH, zatem system nie znajdzie binarnego. Jeśli wykonywany plik wykonywalny ma taką samą nazwę jak standardowy program w twoim systemie (np. "Test"), to "./" użyje programu systemowego, a nie skompilowanego. – bluebrother

+0

Źle zrozumiesz, co powiedziałem. Zrobiłem/nie powiedziałam "Nie ma znaczenia, czy przedrostek jest poprzedzony" ./ "... Po prostu wskazałem dokładnie to, co powiedziałeś: jeśli masz przedrostek" ./ ", nie dojdzie do konfliktu nazw z testem i znalezieniem – Pete

+0

@Pete, dziękuję za slurping w odpowiedziach, które dostarczyli inni.Najpierw z nazwą zderza się z poleceniem systemowym znajdź, a następnie z użyciem ./ do dereferencji. Sprawdź zmiany panie i panowie ... –

1

Spróbuj podać wyjściowy plik wykonywalny o innej nazwie.

Podejrzewam, że wykonałeś polecenie system find, które szuka katalogu o nazwie "test".

Albo spróbować zmuszając go wykonując

./find toto 

EDIT: poprzedzenie ./ do polecenia jest ważna, ponieważ mówi powłoce aby wykonać znaleźć w bieżącym katalogu, w przeciwieństwie do pierwszej „znaleźć "który istnieje w Twojej PATH. Zazwyczaj zaleca się, że nie masz. (bieżący katalog) w ścieżce PATH ze względów bezpieczeństwa.

HTH

P.S. Zapomniałem powiedzieć dobry do pracy przez K & R. Właśnie skończyłem robić to samo po pracy w C przez trzydzieści lat i dobrze było wrócić i odświeżyć umysł!

0

Zamiast pojedynczo odgadnąć, co dokładnie robisz źle, może powinieneś wkleić program, którego używasz do wspomnianej ilustracji?

+0

to prawdopodobnie powinien być komentarz .. – sud03r

+0

Dzięki za napiwek. – blacky

Powiązane problemy