2009-08-01 3 views
5

Я только начинаю программировать и прохожу через K & R, чтобы попытаться изучить C. Я попал в раздел по аргументам командной строки (5.10), но теперь я в тупике. Каждый раз, когда я пытаюсь открыть программу, написанную с помощью аргументов командной строки, мне говорят, что файл X, X, являющийся аргументом, не существует.Beginner Doing K & R

`НКУ -o найти find.c

открыта находка тест

Файл/Документы/Learning_C/тест не exist.`

Любые предложения? Thanks

ответ

3

В какой системе вы используете? В Unix/Linux компиляция & запустить исполняемый файл с помощью:

gcc -o find find.c 
./find test 

As others have noted, когда префикс вашего бинарного файла с «./», есть привычка быть любыми конфликты именования. Однако, если вы сделали find доступные в вашем $PATH, вы можете иметь некоторые конфликты с find и test --Стандартных программ с большинством * NIX дистрибутивов ... Может быть, вы могли бы выбрать более конкретные имена (т.е. ./myFind testArg)

+0

Префикс «./» * является важным, по крайней мере, в Linux, как текущая папка ». обычно не является частью переменной PATH, поэтому система не будет находить двоичный файл. Если исполняемый файл, который вы создали, имеет то же имя, что и стандартная программа в вашей системе (например, «тест»), в противном случае «./» будет использовать системную программу, а не ту, которую вы скомпилировали. – bluebrother

+0

Вы неправильно поняли, что я сказал. Я сделал/не сказал/не сказал: «Неважно, префикс с префиксом« ./ »... Я просто указывал, что вы сказали: если вы префикс« ./ », то не будет именования с поиском и тестированием – Pete

+0

@Pete, спасибо за то, что вы ответили на другие, предоставленные другими. Сначала с именем столкновения с помощью команды system find, а затем с использованием ./ для разыменования. Проверьте правки дамы и джентльмены ... –

1

Попробуйте дать исполняемому файлу другое имя.

Я подозреваю, что вы выполняете команду поиска системы, которая ищет каталог под названием «тест».

Или попытаться заставить его, выполнив

./find toto 

Edit: Предварения в ./ команды важен, поскольку она говорит оболочку для выполнения поиска в текущем каталоге, в отличие от первого «найти ', который существует в вашей ПУТЕ. Обычно этого не рекомендуется. (текущий каталог) в вашем PATH по соображениям безопасности.

HTH

P.S. Забыл сказать хороший для работы через K & Р. Я только что закончил делать то же самое после работы в С тридцать лет, и было хорошо вернуться и освежить ум!

0

Вместо того чтобы заставлять нас все индивидуально угадывать, что именно вы делаете неправильно, возможно, вам следует вставить программу, которую вы используете, для упомянутой иллюстрации?

+0

это, вероятно, должно быть комментарий .. – sud03r

+0

Спасибо за подсказку. – blacky