Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/16: Рейтинг темы: голосов - 16, средняя оценка - 4.81
0 / 0 / 0
Регистрация: 24.03.2011
Сообщений: 68

Аргументы командной строки

08.08.2012, 22:35. Показов 3453. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, у меня вопрос, почему программа сбрасывается, так и не выполнив никаких действий?
Я знаю , что она возвращает 0 и выходит, но почему она не выполняет действие?
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
#include "stdafx.h"
#include "stdlib.h"
#include <conio.h>
#include <iostream>
#include <string>
#include <iomanip>
#include <sstream>
#include <stdexcept>
 
int StringToInt(const char * str, bool & err)
{
char * pLastChar = NULL;
int param = strtol(str, &pLastChar, 10);
err = ((*str == '\0') || (*pLastChar != '\0'));
return param;
}
 
int main(int argc, char* argv[])
{
if (argc <= 1)
{
printf("Program calculates sum of its command line arguments.\n");
return 0;
}
int sum = 0;
for (int i = 1; i < argc; ++i)
{
bool err;
int param = StringToInt(argv[i], err);
if (err)
{
printf("Argument #%d is not a number\n.", i);
return 1;
}
printf("%d", param);
sum += param;
if (i != argc-1)
{
printf(" + ");
}
}
printf(" = %d", sum);
system("pause");
}
Спасибо, всем откликнувшимся
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.08.2012, 22:35
Ответы с готовыми решениями:

Аргументы командной строки
#include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;fstream&gt; #include &lt;string.h&gt; #include &lt;Windows.h&gt; #include &lt;string&gt; using...

Аргументы командной строки
int main(int argc,int **argv) Понял только,что argc отвечает за количество аргументов,а argv-массив указателей на строки символов.Но...

Аргументы командной строки
Уважаемые форумчане, растолкуйте, пожалуйста, назначение третьего аргумента &quot;char *const options&quot; в функции GetOptList . Для чего...

16
556 / 510 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
08.08.2012, 22:50
пройди в дибаггере пошагово и увидишь сам.
0
0 / 0 / 0
Регистрация: 24.03.2011
Сообщений: 68
08.08.2012, 23:00  [ТС]
Цитата Сообщение от novi4ok Посмотреть сообщение
пройди в дибаггере пошагово и увидишь сам.
Прошёл, но как мне это исправить? Если можно объясните пожалуйсто.
0
 Аватар для defer
577 / 256 / 18
Регистрация: 29.11.2010
Сообщений: 868
08.08.2012, 23:24
У меня программа работает. Как вы ее запускаете?
0
0 / 0 / 0
Регистрация: 24.03.2011
Сообщений: 68
08.08.2012, 23:33  [ТС]
у меня VS 2010 Ultimate, там на отладку и всё. Она работает, но сразу выходит и ввести ни чего не даёт.
0
 Аватар для defer
577 / 256 / 18
Регистрация: 29.11.2010
Сообщений: 868
08.08.2012, 23:55
Цитата Сообщение от Александер1 Посмотреть сообщение
Она работает, но сразу выходит и ввести ни чего не даёт.
естественно она сразу выходит, ведь программа работает с аргументами командной строки

меню проект->свойства->отладка->аргументы как-то так, там пишите допустим 2 3
1
0 / 0 / 0
Регистрация: 24.03.2011
Сообщений: 68
09.08.2012, 00:05  [ТС]
defer , спасибо большое. Можно попросить вас стать моим, так сказать, наставником. я студент, изучаю с++(пока лето и время есть), а с лабами проблема(у меня их много и порой не очень понятно).
0
 Аватар для defer
577 / 256 / 18
Регистрация: 29.11.2010
Сообщений: 868
09.08.2012, 00:35
Задавайте вопросы на форуме и будет у вас много наставников

Не по теме:

только не всех надо слушать

0
0 / 0 / 0
Регистрация: 24.03.2011
Сообщений: 68
09.08.2012, 11:56  [ТС]
почему, при запуске .bat, в командной строке не выводятся слова по русски и по англиски, вместо этого непонятные символы.
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
09.08.2012, 13:01
Цитата Сообщение от Александер1 Посмотреть сообщение
почему, при запуске .bat, в командной строке не выводятся слова по русски и по англиски,

Не по теме:

каждый вопрос отдельная тема, а то нелегко рыться в старых темах


.bat то в блокноте пишешь?
если да то там Windos кодировка а в в консоли DOS
самый простой выход- поставь в Блокноте шрифт Terminal он работает с DOS - кодировкой
1
09.08.2012, 16:00
 Комментарий модератора 
Одна тема - один вопрос!
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
10.08.2012, 15:47
Цитата Сообщение от Александер1 Посмотреть сообщение
float StringToInt(const char * str, bool & err)
{
* * char * pLastChar = NULL;
* * float param = strtol(str, &pLastChar, 10);
* * * * err = ((*str == '\0') || (*pLastChar != '\0'));
* * return param;
}
- бог мой зачем столько кода ИМХО это проще вот так делать
C
1
2
3
4
5
6
float StringToInt(const char * str, bool & err)
{
    float param = 0;
    sscanf(str,"%lf",&param);
    return param;
}
единственно мне название функции не нравиться уже тогда StringToFloat
читай об sscanf здесь http://www.cplusplus.com/refer... io/sscanf/
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
10.08.2012, 16:05
Александер1, вот решение твой задачи сложения двух параметров командной строки
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
#include <stdio.h>
 
int main(int argc, char * argv[])
{
    double a = 0;
    double b = 0;
    double c = 0;
    if(argc < 3)
        printf("Unless pprogram params\n");
    else
    {
        if(!sscanf(argv[1],"%lf",&a))
            printf("Parsing 1-st param error\n");
        else
        if(!sscanf(argv[2],"%lf",&b))
            printf("Parsing 2-nd param error\n");
        else
        {
            printf("a = %lf\n", a);
            printf("b = %lf\n", b);
            c = a + b;
            printf("a + b = %lf\n",c);
        }
    }
    return 0;
}
Проверка http://liveworkspace.org/code/... 530c06146f
Миниатюры
Аргументы командной строки  
Вложения
Тип файла: rar plusArgs.exe.rar (18.5 Кб, 7 просмотров)
1
Эксперт С++
 Аватар для nameless
342 / 306 / 36
Регистрация: 16.06.2009
Сообщений: 486
10.08.2012, 17:43
Как вариант решения задачи c boost:rogram_arguments..

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
#include <iostream>
#include <exception>
#include <stdexcept>
#include <cstdlib>
 
#include <boost/program_options.hpp>
 
namespace po = boost::program_options;
 
template <typename T>
auto GetSumArguments(T first, T second) -> decltype (first + second) {
    return first + second;
}
 
int main(int argc, char** argv) {
    int value_first = 0;
    int value_second = 0;
    po::options_description description("allowed options");
    description.add_options()
        ("help,h", "produce help message")
        ("valule_1,1", po::value<int>(&value_first)->default_value(0), "set 'value_1'")
        ("value_2,2", po::value<int>(&value_second)->implicit_value(0), "set 'value_2'");
    po::variables_map options;
    
    try {
        po::store(po::parse_command_line(argc, argv, description), options);
        po::notify(options);
    } catch (const std::exception & exc) {
        std::cerr << exc.what() << std::endl;
        exit(0);
    }
    
    if (options.count("help")) {
        std::cout << description << std::endl;
        exit(0);
    }
    
    std::cout << "Sum of arguments: " << GetSumArguments(value_first, value_second) << std::endl;
}
Bash
1
2
3
nameless@l49-53-61:~/cpp/boost_po$ g++ -std=c++11 main.cpp -o main -lboost_program_options
nameless@l49-53-61:~/cpp/boost_po$ ./main -1 10 -2 34
Sum of arguments: 44
0
0 / 0 / 0
Регистрация: 24.03.2011
Сообщений: 68
11.08.2012, 22:41  [ТС]
http://liveworkspace.org/code/... 530c06146f[/QUOTE]
Юр, по этому коду VS 2010 ругается на sscanf и не опредиляет его, может быть библиотеки нехватает?
Но прога запускается, и после выполнения сразу закрывается getch() тоже не помогает, что делать?
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
11.08.2012, 22:56
новая задача новая тема
0
0 / 0 / 0
Регистрация: 24.03.2011
Сообщений: 68
12.08.2012, 00:14  [ТС]
Цитата Сообщение от ValeryS Посмотреть сообщение
новая задача новая тема
Это та же задача.

Добавлено через 1 час 17 минут
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Александер1, вот решение твой задачи сложения двух параметров командной строки
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
#include <stdio.h>
 
int main(int argc, char * argv[])
{
    double a = 0;
    double b = 0;
    double c = 0;
    if(argc < 3)
        printf("Unless pprogram params\n");
    else
    {
        if(!sscanf(argv[1],"%lf",&a))
            printf("Parsing 1-st param error\n");
        else
        if(!sscanf(argv[2],"%lf",&b))
            printf("Parsing 2-nd param error\n");
        else
        {
            printf("a = %lf\n", a);
            printf("b = %lf\n", b);
            c = a + b;
            printf("a + b = %lf\n",c);
        }
    }
    return 0;
}
Проверка http://liveworkspace.org/code/... 530c06146f
Спасибо разобрался.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.08.2012, 00:14
Помогаю со студенческими работами здесь

Аргументы командной строки
Есть прога, которая считывает файл посимвольно и выводит количество повторений символов в консоль. Открытие файла происходит так: FILE...

Аргументы командной строки
Необходимо открыть файл на чтение, используя аргументы main. Не хотелось бы прописывать путь к файлу, который хотим открыть. Файл помещен в...

Аргументы командной строки
Пытаюсь разобраться с этой штукой. У Дейтела это собственно только дополнение, а не отдельный пункт раздела так что всё написано сжато и с...

Аргументы командной строки (АКС)
Доброго времени суток! Почему при объявлении АКС мы используем указатель на строки ... int main (int argc, char* argv) ... ...

Неясность (аргументы командной строки)
nextArg = 1; while (nextArg &lt; argc) { if ((strlen(argv) &gt; 1) &amp;&amp; ('-' == argv)) ... } Прошу вас...


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

Или воспользуйтесь поиском по форуму:
17
Закрытая тема Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru