опции командной строки для создания файлов - PullRequest
0 голосов
/ 27 апреля 2011

я хочу сделать программу на C "animal.c".
и в оболочке,
, когда я наберу

>animal -cat

результат - "мяу"

>animal -dog

результат - "лук".
это единственный способ?

void main(int argc, char **argv){
if(argv[1][0] == '-' && argv[1][1] == 'c' && argv[1][2] == 'a' && argv[1][3] == 't')
    printf("meow");
if(argv[1][0] == '-' && argv[1][1] == 'd' && argv[1][2] == 'o' && argv[1][3] == 'g')
    printf("bow");
}

в другом случае, когда я хочу создать файл 'cat', который находится в "/ animal",
при условии, что папка 'animal' уже находится в корневом каталоге.

     animal -cat  

в результате получается файл "cat" в "/ animal"
абсолютный путь к файлу "cat" равен "/ animal / cat"

как это сделать?
Есть ли другой способ получить значение параметра?

Ответы [ 3 ]

2 голосов
/ 27 апреля 2011

Если вы передаете имя файла, вы не должны ставить перед ним «-». На самом деле «-» - это модификатор, который говорит «опция одного символа * s * follow», «-» - это модификатор, который говорит «опция с именем, длина которого превышает один символ».

Первым шагом для облегчения вашей боли будет использование strncmp вместо проверки каждого символа переданного аргумента.

0 голосов
/ 27 апреля 2011

how to do ?

Чтобы ответить на ваш последний вопрос, вам нужно использовать что-то вроде mkdir в сочетании с fopen для создания файла.

is there another way to receive option value? Есть способ получить значения "option" путем перенаправления ввода. Если в вашей программе было две строки, в которых было 2 fgets:

char name[10];
char date[9];

fgets(name,10,stdin);
fgets(date,9,stdin);

и в файле с именем data.txt у вас был

 Bob
 04/27/11

вы можете перенаправить ввод в вашу программу как

 myprog < data.txt

и вы как бы сами вводите значения.

0 голосов
/ 27 апреля 2011

getopt - это популярный и почти стандартный способ анализа параметров командной строки.Вы должны использовать это (или что-то подобное), а не анализировать аргументы командной строки вручную.Это чрезвычайно подвержено ошибкам.

...