Передача параметров в функцию - 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.