2009-08-01 14 views
5

Sto solo iniziando a programmare e passando attraverso K & R per provare e imparare C. Ho ottenuto la sezione sugli argomenti della riga di comando (5.10) ma ora sono perplesso. Ogni volta che provo ad aprire un programma che ho scritto con gli argomenti della riga di comando, mi viene detto che il file X, essendo l'argomento X, non esiste.Beginner Doing K & R

`gcc -o trovare find.c

Open Find prova

Il file/Documents/Learning_C/test non exist.`

Qualche suggerimento? Grazie

risposta

3

Quale sistema stai? In Unix/Linux si compila & eseguire il vostro eseguibile tramite:

gcc -o find find.c 
./find test 

As others have noted, quando precedere la tua binario con "./", non ci sarà alcun conflitto di denominazione. Tuttavia, se hai fatto find accessibili nel vostro $PATH, si potrebbe avere alcuni conflitti con find e test programmi --standard con la maggior parte delle distribuzioni * nix ... Forse si poteva scegliere nomi più specifici (cioè ./myFind testArg)

+0

Il prefisso "./" * è * importante, almeno su Linux, come cartella corrente "." di solito non fa parte della variabile PATH, quindi il sistema non troverà il binario. Se l'eseguibile che hai prodotto ha lo stesso nome di un programma standard sul tuo sistema (come "test"), lasciando fuori "./" userà il programma di sistema, non quello che hai compilato. – bluebrother

+0

Hai frainteso quello che ho detto. Ho fatto/non/ho detto "Non importa se tu prefissi o meno con" ./ "... Stavo semplicemente indicando esattamente quello che hai detto: Se prefissi con" ./ ", non ci sarà uno scontro di nomi con find & test – Pete

+0

@Pete, grazie per aver risucchiato le risposte fornite da altri: prima con il nome scontro con il comando di sistema trova e poi con l'uso di ./ per dereferenziare. Controlla le modifiche signore e signori ... –

1

Provare a dare all'eseguibile di output un nome diverso.

Sospetto che il comando di ricerca del sistema in esecuzione stia cercando una directory denominata "test".

Oppure provate costringendolo eseguendo

./find toto 

Edit: Anteporre la ./ al comando è importante perché racconta la shell per eseguire il ritrovamento nella directory corrente in contrasto con il primo 'trovare 'che esiste nel tuo PERCORSO. Normalmente è raccomandato che tu non abbia. (la directory corrente) nel PATH per motivi di sicurezza.

HTH

P.S. Ho dimenticato di dirlo per aver lavorato con K & R. Ho appena finito di fare lo stesso dopo aver lavorato in C per trent'anni ed è stato bello tornare e rinfrescare la mente!

0

Invece di indurci tutti individualmente a capire esattamente cosa stai facendo male, forse dovresti incollare il programma che stai usando per l'illustrazione menzionata?

+0

questo dovrebbe probabilmente essere un commento .. – sud03r

+0

Grazie per il suggerimento. – blacky

Problemi correlati