Передача параметров в функцию - C (СИ) (154254)
Формулировка задачи:
Потихонечку изучаю Си. Решил написать программку которая должна переводить из dec в hex/bin.
Причем принимает аргументы -h - hex, -b - binary
Хотелось бы что бы была одна функция перевода hex и bin'a наподобии
Но незнаю как сделать так что бы распознавались введеные параметры.
Например если ввести -h 14 тогда бы 14 переводилось из dec в hex, если -b 14 то в бинарный
Конечно можно и проще сделать, вызывая разные функции например
Но тем не менее все же одной функцией хочется реализовать
#include <stdio.h> #include <stdlib.h> #include <getopt.h> #include <string.h> int main(int argc, char *argv[]) { int opt; while((opt = getopt(argc, argv, ":h:b:"))!=-1) { switch(opt) { case 'h': ... break; case 'b': ... break; case ':': fprintf(stderr, "%s: опции '-%c' требуется аргумент\n", argv[0], optopt); exit(1); default: fprintf(stderr, "%s: опция '-%c' неверна\n", argv[0], optopt); exit(1); } } }
void funcHexBin() { if(hex) .... printf(...); .... if(bin) .... printf(...); .... }
switch(opt) { case 'h': DecToHex(atoi(optarg)); break; case 'b': DecToBin(atoi(optarg)); break; }
Решение задачи: «Передача параметров в функцию»
textual
Листинг программы
int funcHexBin(char *argv[], int ch) { if (strcmp(argv[1],"-h")==0) printf("%x\n", ch); else if (strcmp(argv[1],"-b")==0) printf(...); else printf("bad arg!\n"); return 0; }
Объяснение кода листинга программы
- Входные данные функции funcHexBin - char *argv[] и int ch.
- Если argv[1] равно
-h
, то выводится значение ch в шестнадцатеричной системе счисления. - Если argv[1] равно
-b
, то выводится значение ch в двоичной системе счисления. - Если argv[1] не равно
-h
и argv[1] не равно-b
, то выводится сообщениеbad arg!
. - Функция funcHexBin возвращает 0.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д