Введение
В этом проекте вы научитесь анализировать и обрабатывать аргументы командной строки в программе на C. Это фундаментальный навык в разработке программного обеспечения, так как многие программы принимают и обрабатывают аргументы командной строки для настройки их поведения.
👀 Предварительный просмотр
$ gcc cmd.c -o cmd
$./cmd --arg1 1 --arg2 demo --arg9 labex
arg1:1
arg2:demo
arg9:labex
🎯 Задачи
В этом проекте вы научитесь:
- Как создать файл на C и написать базовую структуру программы на C
- Как анализировать аргументы командной строки и извлекать имена параметров и их значения
- Как выводить имена и значения параметров в требуемом формате
🏆 Достижения
После завершения этого проекта вы сможете:
- Разобраться в концепции аргументов командной строки и как их использовать в программе на C
- Реализовать программу, которая может анализировать и обрабатывать аргументы командной строки
- Применить свои знания языка программирования C для решения практической задачи
Создайте файл на C
В этом шаге вы создадите файл на C для программы с аргументами командной строки.
- Откройте терминал и перейдите в каталог проекта:
cd ~/project
- Создайте новый файл на C с именем
cmd.cв каталоге проекта:
touch cmd.c
- Откройте файл
cmd.cв текстовом редакторе и добавьте следующий код:
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[]) {
// Ваш код будет здесь
return 0;
}
Это базовая структура программы на C, которая будет обрабатывать аргументы командной строки.
Реализуйте разбор аргументов командной строки
В этом шаге вы реализуете логику для разбора аргументов командной строки и вывода имен и значений параметров.
- В функции
main()добавьте цикл для перебора аргументов командной строки:
for (int i = 1; i < argc; i++) {
// Ваш код будет здесь
}
Цикл начинается с индекса 1, потому что argv[0] содержит имя программы.
- Внутри цикла проверьте, начинается ли текущий аргумент с
--:
if (strncmp(argv[i], "--", 2) == 0) {
// Аргумент - это параметр
char *param = argv[i] + 2; // Удалите ведущие "--"
char *value = NULL;
// Проверьте, есть ли значение после параметра
if (i + 1 < argc && strncmp(argv[i + 1], "--", 2)!= 0) {
value = argv[i + 1];
i++; // Пропустите аргумент со значением
}
printf("%s:%s\n", param, value);
}
Этот код извлекает имя и значение параметра из аргументов командной строки и выводит их в требуемом формате.
- Финальный код выглядит так:
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[]) {
for (int i = 1; i < argc; i++) {
if (strncmp(argv[i], "--", 2) == 0) {
char *param = argv[i] + 2; // Удалите ведущие "--"
char *value = NULL;
// Проверьте, есть ли значение после параметра
if (i + 1 < argc && strncmp(argv[i + 1], "--", 2)!= 0) {
value = argv[i + 1];
i++; // Пропустите аргумент со значением
}
printf("%s:%s\n", param, value);
}
}
return 0;
}
- Сохраните файл
cmd.c.
Компилируйте и запустите программу
В этом шаге вы скомпилируете программу на C и запустите ее с некоторыми примерами аргументов командной строки.
- Скомпилируйте файл
cmd.c:
gcc cmd.c -o cmd
Это создаст исполняемый файл с именем cmd.
- Запустите программу с некоторыми примерами аргументов командной строки:
./cmd --arg1 1 --arg2 demo --arg9 labex
Вы должны увидеть следующий вывод:
arg1:1
arg2:demo
arg9:labex
- Попробуйте запустить программу с некоторыми повторяющимися параметрами:
./cmd --testarg1 1 --testarg2 demo --testarg1 labex
Вы должны увидеть следующий вывод:
testarg1:1
testarg2:demo
testarg1:labex
Поздравляем! Вы успешно реализовали программу для разбора аргументов командной строки.
Резюме
Поздравляем! Вы завершили этот проект. Вы можете практиковаться в более многих лабораторных работах в LabEx, чтобы улучшить свои навыки.



