Обработать параметры запуска программы - C (СИ)
Формулировка задачи:
Всем доброго дня, прошу помочь в выполнении такой задачи
Написать программу, которая обеспечивает работу команды вида:
[имья_команды] [-a | -b] [-o выходной файл],
где -a и -b несовместимые флаги.
• если задан флаг -a - команда отображает имя почтового ящика;
• если задан флаг -b - имя текущего каталога.
Полученная информация также записывается в файл, имя которого задается как аргумент опции -o.
Вообще с си никак(
Заранее благодарен!
Решение задачи: «Обработать параметры запуска программы»
textual
Листинг программы
#include <stdio.h> #include <string.h> #include <stdbool.h> #include <unistd.h> #include <linux/limits.h> enum EFlags { NONE = 0x00, PRINT_EMAIL = 0x01, PRINT_PATH = 0x02, TO_FILE = 0x04 }; typedef struct TParams_t { int flags; const char* file; } TParams; TParams getParams(int argc, char* argv[]) { TParams params = {NONE, NULL}; int i; for (i = 0; i < argc; ++i) { if (strcmp(argv[i], "-a") == 0) { params.flags |= PRINT_EMAIL; } else if (strcmp(argv[i], "-b") == 0) { params.flags |= PRINT_PATH; } else if (strcmp(argv[i], "-o") == 0) { params.flags |= TO_FILE; if (i < argc - 1) { params.file = argv[++i]; } } } return params; } bool checkParams(TParams params) { if ((params.flags & PRINT_PATH) && (params.flags & PRINT_EMAIL)) { return false; } if ((params.flags & TO_FILE) && (params.file == NULL)) { return false; } return true; } void print(const char text[], FILE* f) { fprintf(stdout, "%s\n", text); if (f) { fprintf(f, "%s\n", text); } } void operations(TParams params) { FILE* f = NULL; if (params.flags & TO_FILE) { f = fopen(params.file, "w"); } if (params.flags & PRINT_PATH) { char path[PATH_MAX]; getcwd(path, PATH_MAX); print(path, f); } if (params.flags & PRINT_EMAIL) { print("my@mail.ru", f); } } int main(int argc, char* argv[]) { TParams params = getParams(argc - 1, argv + 1); if (checkParams(params) == false) { fprintf(stderr, "bad params\n"); return 1; } if (params.flags == NONE) { printf("no params\n"); } else { operations(params); } return 0; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д