2009-08-01 8 views
5

Ich beginne gerade zu programmieren und gehe durch K & R zu versuchen und zu lernen C. Ich habe den Abschnitt über die Befehlszeile Argumente (5.10) bekommen, aber jetzt bin ich ratlos. Jedes Mal, wenn ich versuche, ein Programm zu öffnen, das ich mit Befehlszeilenargumenten geschrieben habe, wird mir gesagt, dass die Datei X, wobei X das Argument ist, nicht existiert.Anfänger Doing K & R

gcc -o finden find.c

offen Fund Test

Die Datei/Dokumente/Learning_C/Test nicht

nicht exist.`

Irgendwelche Vorschläge? Danke

Antwort

3

In welchem ​​System sind Sie? In Unix/Linux kompilieren Sie & laufen die ausführbare Datei über:

gcc -o find find.c 
./find test 

As others have noted, wenn Sie Ihre Binärdatei mit "./" prefix gibt gewohnt alle Namenskonflikte sein. Wenn Sie jedoch find zugänglich in Ihrem $PATH gemacht, könnte man einige Konflikte mit find und test --standard Programme haben mit den meisten * nix-Distributionen ... Vielleicht könnten Sie spezifischere Namen wählen (dh ./myFind testArg)

+0

Das Präfix "./" * ist * zumindest bei Linux als aktueller Ordner wichtig. ist normalerweise nicht Teil der PATH-Variablen, daher wird das System die Binärdatei nicht finden. Wenn die von Ihnen erstellte ausführbare Datei den gleichen Namen wie ein Standardprogramm auf Ihrem System hat (wie "test"), wird "./" nicht das von Ihnen kompilierte Systemprogramm verwenden. – bluebrother

+0

Sie missverstehen, was ich gesagt habe. Ich habe/nicht/gesagt "Es spielt keine Rolle, ob Sie" ./ "vorangestellt haben oder nicht ... Ich habe einfach genau darauf hingewiesen, was Sie gesagt haben: Wenn Sie" ./ "voranstellen, wird es keinen Namenskonflikt geben mit finden und testen – Pete

+0

@Pete, danke für schlürfen in den Antworten, die andere zur Verfügung gestellt.Erste mit dem Namen Konflikt mit dem System Befehl finden und dann mit der Verwendung von ./ zur dereferenz.Kontrollieren Sie die Bearbeitungen Damen und Herren ... –

1

Versuchen Sie, Ihrer Ausgabedatei einen anderen Namen zu geben.

Ich vermute, dass Sie den Systembefehl find ausführen, der nach einem Verzeichnis namens 'test' sucht.

oder versuchen, es zu zwingen, indem

./find toto 

bearbeitet Ausführung: vorangestellten ./ auf den Befehl wichtig, weil sie den Shell teilen den Fund im aktuellen Verzeichnis auszuführen, wie die ersten entgegengesetzten ‚finden "Das existiert in deinem PATH. Es wird normalerweise empfohlen, dass Sie nicht haben. (das aktuelle Verzeichnis) in Ihrem PATH aus Sicherheitsgründen.

HTH

P.S. Ich habe vergessen, einen guten Namen zu sagen, um durch K & R zu arbeiten. Ich habe gerade das Gleiche gemacht, nachdem ich dreißig Jahre in C gearbeitet habe und es war gut, zurück zu kommen und den Verstand zu erfrischen!

0

Anstatt uns alle einzeln zu erraten, was genau Sie falsch machen, vielleicht sollten Sie das Programm, das Sie für die genannte Abbildung verwenden einfügen?

+0

sollte das wohl ein kommentar sein .. – sud03r

+0

Danke für den Tipp. – blacky