Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Photofenix
61 / 61 / 39
Регистрация: 18.11.2016
Сообщений: 513
Завершенные тесты: 1
1

Передача числовых аргументов командной строке

04.02.2017, 20:00. Просмотров 878. Ответов 14
Метки нет (Все метки)

Написал программу, программа компилируется успешно, но тут же завершается с кодом 0x01.
Программа взята из учебника по C++ и как она должна корректно работать мне все еще не понятно.
Буду благодарен в помощи.
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
/*
Программа должна отобрать сумму двух числовых аргументов командной строки.
*/
 
#include <iostream>
    using namespace std;
 
        int main (int argc, char *argv[]){
 
            double a,b;
 
            if (argc != 3){
                cout << "Использования: add числа" << endl;
                return 1;
            }
 
            a = atof(argv[1]);
            b = atof(argv[2]); // преобразования аргументов коммандной строки.
 
            cout << a + b;
            system ("pause");
            return 0;
 
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2017, 20:00
Ответы с готовыми решениями:

Передача аргументов командной строки
Здравствуйте. Подскажите пожалуйста, зачем в этом коде &quot;return 1;&quot;? #include...

Передача аргументов командной строки функции main()
Добрый день Дана задача: Напишите программу, которая запрашивает пароль,...

Передача препроцессорных определений в командной строке
Здравствуйте! Подскажите пожалуйста, как передать препроцессорное...

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

Разбор аргументов командной строки
Для Unix существуют специальные средства для разбора опций командной строки...

14
likehood
965 / 814 / 390
Регистрация: 25.12.2016
Сообщений: 2,691
Завершенные тесты: 3
04.02.2017, 20:08 2
Лучший ответ Сообщение было отмечено Photofenix как решение

Решение

Цитата Сообщение от Photofenix Посмотреть сообщение
Программа взята из учебника по C++ и как она должна корректно работать мне все еще не понятно.
Неужели в учебнике об этом не написано?

После компиляции нужно перейти в каталог с программой, и в командной строке ввести
Код
program_name 3 4
где program_name.exe - имя скомпилированного файла программы (в линуксе просто program_name, без .exe).
1
Ferrari F1
791 / 521 / 156
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 1
Завершенные тесты: 1
04.02.2017, 20:12 3
Лучший ответ Сообщение было отмечено Photofenix как решение

Решение

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
/*
Программа должна отобрать сумму двух числовых аргументов командной строки.
*/
 
#include <iostream>
#include <string>
using namespace std;
 
int main(int argc, char** argv) {
 
    double a, b;
 
    if (argc != 3) {
        cout << "Использования: add числа" << endl;
        return 1;
    }
 
    a = stod(argv[1]);
    b = stod(argv[2]); // преобразования аргументов коммандной строки.
 
    cout << a + b << endl;
    system("pause");
    return 0;
 
}
Передача числовых аргументов командной строке
1
likehood
04.02.2017, 20:17
  #4

Не по теме:

Ferrari F1, с помощью Alt + PrintScreen можно сделать скриншот только активного окна.

0
Ferrari F1
04.02.2017, 20:21
  #5

Не по теме:

likehood, хотел похвастать наличием ярлыков для игр Alien Shooter TD и жта4)

0
Photofenix
61 / 61 / 39
Регистрация: 18.11.2016
Сообщений: 513
Завершенные тесты: 1
04.02.2017, 20:23  [ТС] 6
Цитата Сообщение от likehood Посмотреть сообщение
Неужели в учебнике об этом не написано?
После компиляции нужно перейти в каталог с программой, и в командной строке ввести
Перечитал, да, там написано, но сумбурно. Сейчас попробую выполнить.
0
likehood
04.02.2017, 20:29
  #7

Не по теме:

Ferrari F1, ну это дело святое! :D

0
Photofenix
61 / 61 / 39
Регистрация: 18.11.2016
Сообщений: 513
Завершенные тесты: 1
04.02.2017, 20:31  [ТС] 8
Программа запустилась, но результаты не корректны.
0
Миниатюры
Передача числовых аргументов командной строке  
Ferrari F1
791 / 521 / 156
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 1
Завершенные тесты: 1
04.02.2017, 20:35 9
Лучший ответ Сообщение было отмечено Photofenix как решение

Решение

Photofenix, директорию надо сперва указать, где лежит экзишник, делается это командой:
cd путь_экзишника
1
Photofenix
61 / 61 / 39
Регистрация: 18.11.2016
Сообщений: 513
Завершенные тесты: 1
04.02.2017, 20:40  [ТС] 10
Я специально вынес экзешник на рабочий стол, чтобы долго не писать.
Не работает...
0
Ferrari F1
791 / 521 / 156
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 1
Завершенные тесты: 1
04.02.2017, 20:41 11
Лучший ответ Сообщение было отмечено Photofenix как решение

Решение

Photofenix, а вы мой код пробовали использовать?
1
Photofenix
61 / 61 / 39
Регистрация: 18.11.2016
Сообщений: 513
Завершенные тесты: 1
04.02.2017, 20:52  [ТС] 12
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
а вы мой код пробовали использовать?
Ваш код тоже скомпилировал, вот результат:
0
Миниатюры
Передача числовых аргументов командной строке  
Photofenix
61 / 61 / 39
Регистрация: 18.11.2016
Сообщений: 513
Завершенные тесты: 1
04.02.2017, 20:55  [ТС] 13
Все замечательно, все работает.
Не объясните, что в разница между char **argv[] и char *argv[].
Как я понимаю, что ** - это указатель на указатель, а * это просто указатель.
0
Ferrari F1
791 / 521 / 156
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 1
Завершенные тесты: 1
04.02.2017, 21:10 14
Цитата Сообщение от Photofenix Посмотреть сообщение
char **argv[] и char *argv[]
может между char **argv и char *argv[] ?

Ни в чем, различия лишь визуальные, а существенные различия в этих строках:
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
C++
1
2
a = stod(argv[1]);
b = stod(argv[2]); // преобразования аргументов коммандной строки.
1
Photofenix
61 / 61 / 39
Регистрация: 18.11.2016
Сообщений: 513
Завершенные тесты: 1
04.02.2017, 21:41  [ТС] 15
Сейчас попробовал код, который написал в самом начале и все работает замечательно!
Я понял свою ошибку, я не правильно написал путь к программе.
Вам ОГРОМНОЕ СПАСИБО!
0
04.02.2017, 21:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.02.2017, 21:41

Обработка аргументов командной строки
Не нашел где создать тему, поэтому решил здесь. 1. Интересуют стандарты для...

Использование аргументов командной строки
Всем доброго дня !!! Подскажите пожалуйста как связать этот код программы с...

Ввод аргументов командной строки
Здравствуйте, такой вопрос: как задаются аргументы командной строки в си? нужно...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru