Передача параметров в функцию - C (СИ) (154254)

Узнай цену своей работы

Формулировка задачи:

Потихонечку изучаю Си. Решил написать программку которая должна переводить из dec в hex/bin. Причем принимает аргументы -h - hex, -b - binary
#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);
        }
    }
}
Хотелось бы что бы была одна функция перевода hex и bin'a наподобии
void funcHexBin()
{
  if(hex)
    ....
    printf(...);
   ....
  if(bin)
     ....
    printf(...);
    ....
}
Но незнаю как сделать так что бы распознавались введеные параметры. Например если ввести -h 14 тогда бы 14 переводилось из dec в hex, если -b 14 то в бинарный Конечно можно и проще сделать, вызывая разные функции например
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;
  
}

Объяснение кода листинга программы

  1. Входные данные функции funcHexBin - char *argv[] и int ch.
  2. Если argv[1] равно -h, то выводится значение ch в шестнадцатеричной системе счисления.
  3. Если argv[1] равно -b, то выводится значение ch в двоичной системе счисления.
  4. Если argv[1] не равно -h и argv[1] не равно -b, то выводится сообщение bad arg!.
  5. Функция funcHexBin возвращает 0.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.364 из 5
Похожие ответы