Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
1 / 1 / 1
Регистрация: 12.09.2015
Сообщений: 4
1

Ошибка при использовании аргументов командной строки

15.03.2014, 17:02. Показов 1169. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток.

Решил в маленькую программу, для перевода чисел, добавить работу с аргументами, для удобства. Меня ждала неудача, программа выдаёт неверный результат.
Кто знает в чем проблема?

P.S. Если запускать программу без аргументов, то она работает.

Вот сам код

Кликните здесь для просмотра всего текста
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <stdio.h>
 int main (int argc, char *argv[]) {
    int i, convertedNumber[64];
    long int numberToConvert;
    int nextDigit, base, index = 0;
    const char baseDigits[16] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
 
/* Получение числа и основания системы */
 
    if(argc == 1) /* Если нет аргументов вызова */
        {
            printf("Number to be converted? ");
            scanf("%ld",&numberToConvert);
            printf("Base? ");
            scanf("%i",&base);
        }
    else /* При наличии аргументов ( Не работает ) */
        {
            for ( i = 1; i < argc; i++)
                {
                    if ( (int)argv[i] == 'b' )
                    {
                        ++i;
                        base=(int)argv[i+1];
                    }
 
                    if ( (long int)argv[i] == 'n')
                    {
                        ++i;
                        numberToConvert=(long int)argv[i];
                    }
                }
        }
 
        /* Расчёт */
 
        do
        {
            convertedNumber[index] = numberToConvert % base;
            ++index;
            numberToConvert = numberToConvert / base;
        }
        while (numberToConvert != 0);
 
        /* Вывод результата */
        printf("Converted number = ");
        for (--index; index >= 0; --index)
        {
            nextDigit = convertedNumber[index];
            printf("%c", baseDigits[nextDigit]);
        }
        printf("\n");
 
       return 0;
 }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.03.2014, 17:02
Ответы с готовыми решениями:

Передача аргументов командной строки из одной программы в другую
Добрый день! Вот следующее задание Программа должна запускать тестируемую программу, передавая...

создание *.pro при использовании qmake из командной строки
Всем здравствуйте. Я новичок в Qt. Более того. Я мало работал с командной строкой (Работаю под...

Сколько аргументов командной строки при запуске bash-скрипта позволяют получить предопределенные переменные $#, $1,.,$
Сколько аргументов командной строки при запуске bash-скрипта позволяют получить предопределенные...

Передача аргументов из командной строки
В С можно так: int main(int argc, char* argv) Есть ли какой аналог для паскаля? FPC написан на...

2
Клюг
7674 / 3189 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
15.03.2014, 17:12 2
#include <stdint.h>
intmax_t strtoimax( const char *ptr, char **endptr, int base );

в помощь.
1
78 / 77 / 51
Регистрация: 30.03.2013
Сообщений: 194
15.03.2014, 19:43 3
у вас base и numberToConvert не инициализируются, точнее base равен нулю а дальше идёт остаток от деления на ноль
1
15.03.2014, 19:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.03.2014, 19:43
Помогаю со студенческими работами здесь

Передача аргументов командной строки
Смысл в том, что бы реализовать switch по количеству аргументов командной строки, выполняя при этом...

Разбор аргументов командной строки
#!/usr/bin/python3.4 # -*- coding: UTF-8 -*- import sys import argparse import os...

Проверка аргументов командной строки
Код вызывающий программу (интерфейс для работы с разными программами): { int caesar =...

Вывод аргументов командной строки
Доброго времени. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru