как параметры командной строки создать файлы
-
22-10-2019 - |
Вопрос
Я хочу сделать программу 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");
}
В другом случае, когда я хочу сделать файл «кошка», который находится в «/животном»,
Предполагая, что папка «животное» уже находится в корневом каталоге.
animal -cat
Результатом является создание файла «кошка» в «/животное»
Абсолютный путь файла "Cat" - "/Animal/Cat"
как сделать ?
Есть ли другой способ получить значение опции?
Решение
getopt является популярным и почти стандартным способом параметров командной строки. Вы должны использовать это (или что -то подобное), а не аргументы командной строки, а не анализ. Это чрезвычайно склонна к ошибкам.
Другие советы
Если вы передаете имя файла, вы не должны ставить «-» перед ним. На самом деле '-'-это модификатор, который сообщает «Опция одиночного символа* S* следить», '-'-это модификатор, который сообщает «опция с именем дольше, чем следует один символ».
Первым шагом к EaSen ваша боль было бы использовать STRNCMP вместо проверки каждого символа прошедшего аргумента.
how to do ?
Чтобы ответить на ваш последний вопрос, вам нужно использовать что -то вроде Мкдир в сочетании с Fopen для создания файла.
is there another way to receive option value?
Есть способ получить значения «опция», перенаправляя вход. Если у вас было две строки в вашей программе, у которых было 2 FGET:
char name[10];
char date[9];
fgets(name,10,stdin);
fgets(date,9,stdin);
и в файле с именем data.txt у вас
Bob
04/27/11
Вы можете перенаправить ввод в свою программу, как
myprog < data.txt
И это было бы похоже на то, как вы вводите значения самостоятельно.