Форум программистов, компьютерный форум CyberForum.ru

Передача аргументов через консоль - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
Nikko12
 Аватар для Nikko12
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 162
04.09.2013, 18:46     Передача аргументов через консоль #1
Подскажи пожалуйста, вот такой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <vector>
using namespace std;
int main (int argc, char *argv[])
{
    int i;
    vector<int>vi;
    vector<char>vc;
    for(i=1;i<argc;++i)
    {
        cout<<*argv[i]<<" ";
    }
    system("pause");
    return 0;
}
Почему если передавать аргумент вида *(звездочка), то программа выводит всякий мусор. С другими аргументами все ОК, проблема только в этом. Можно ли вообще передать *(звездочку) в виде аргумента???
P.S. Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.09.2013, 18:46     Передача аргументов через консоль
Посмотрите здесь:

C++ Передача аргументов в ф-ию
Передача аргументов функции C++
C++ Передача аргументов в функции
передача аргументов C++
C++ Передача аргументов функции
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
coloc
погромист
 Аватар для coloc
409 / 245 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
04.09.2013, 19:07     Передача аргументов через консоль #2
Nikko12, вообще не понял о чем ты. Может проблема в том что ты разименововаеш указатель на строку?
cout<<*argv[i]<<" "; ты об этой звездочке?
Nikko12
 Аватар для Nikko12
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 162
04.09.2013, 20:37  [ТС]     Передача аргументов через консоль #3
coloc, Нет, если в командной строке написать: f:\\1.exe 1 + 2 - 3 * 4, где 1.exe иполняемая программа приведенная выше и ей передавать аргументы 1, +, 2, -, 3, *, 4, то при достижении аргумента *(звездачка), программа выведет мусор, например: "1 + 2 - 3 1 1 2 3 a A c C C C C C c D G g H I I J L M n P P P P P P R R R S
s S S V X └ ─ ╠ ═ ╬ ╧ ╧ ╤ ▌ ь ё Ї ¤ * * * 4 Для продолжения нажмите любую клавишу . . ."
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
05.09.2013, 03:50     Передача аргументов через консоль #4
Цитата Сообщение от Nikko12 Посмотреть сообщение
если в командной строке написать: f:\\1.exe 1 + 2 - 3 * 4
...
Миниатюры
Передача аргументов через консоль  
Nikko12
 Аватар для Nikko12
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 162
05.09.2013, 07:25  [ТС]     Передача аргументов через консоль #5
alsav22, Почему же у меня тогда выводится мусор??
Nikko12
 Аватар для Nikko12
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 162
05.09.2013, 07:31  [ТС]     Передача аргументов через консоль #6
Вот, как получается у меня:
Миниатюры
Передача аргументов через консоль  
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
05.09.2013, 07:43     Передача аргументов через консоль #7
На моём скрине видно, как я файл запускаю из командной строки. А вы как это делаете (на вашем скрине не видно)?
Nikko12
 Аватар для Nikko12
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 162
05.09.2013, 17:49  [ТС]     Передача аргументов через консоль #8
Виноват, вот:
Миниатюры
Передача аргументов через консоль  
Raali
572 / 276 / 12
Регистрация: 06.07.2013
Сообщений: 917
Завершенные тесты: 1
05.09.2013, 18:00     Передача аргументов через консоль #9
Цитата Сообщение от Nikko12 Посмотреть сообщение
cout<<*argv[i]<<" ";
попробуй

C++
1
cout<<argv[i]<<" ";
Nikko12
 Аватар для Nikko12
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 162
05.09.2013, 18:14  [ТС]     Передача аргументов через консоль #10
Raali, Тоже не работает, только больше мусора вывел

Добавлено через 44 секунды
Скрин приложить Raali, ?
Raali
572 / 276 / 12
Регистрация: 06.07.2013
Сообщений: 917
Завершенные тесты: 1
05.09.2013, 18:59     Передача аргументов через консоль #11
видимо правда со звездочкой какая то магия
Nikko12
 Аватар для Nikko12
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 162
05.09.2013, 19:08  [ТС]     Передача аргументов через консоль #12
Raali, Но почему, что в этом символе такого особенного?????
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
05.09.2013, 20:08     Передача аргументов через консоль #13
Nikko12, поэкспериментируйте. Попробуйте звёздочку первым параметром, единственным параметром и пр. Чтобы было больше информации к размышлению.
Nikko12
 Аватар для Nikko12
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 162
05.09.2013, 20:35  [ТС]     Передача аргументов через консоль #14
alsav22, Я экспериментировал, не важно каким параметром по счету идет аргумент *(звездочка), если он встречается программа выводит мусор, если его нету, работает хорошо. Если интересует могу приложить скрины с параметрами экспериментов.

Добавлено через 5 минут
Это как-то может зависеть от ОС???
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
05.09.2013, 20:35     Передача аргументов через консоль #15
Какой компилятор, какая версия?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
05.09.2013, 20:39     Передача аргументов через консоль #16
Цитата Сообщение от Nikko12 Посмотреть сообщение
Это как-то может зависеть от ОС???
Какая?
Nikko12
 Аватар для Nikko12
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 162
05.09.2013, 20:43  [ТС]     Передача аргументов через консоль #17
Somebody, Компилятор MinGW Studio 2.05, но мне кажется он тут не причем.
alsav22, OC - Windows XP SP3
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
05.09.2013, 21:09     Передача аргументов через консоль #18
Цитата Сообщение от Nikko12 Посмотреть сообщение
Компилятор MinGW Studio 2.05
Сейчас в ней попробовал, тот же глюк. Только не мусор выводит, а (если сделать вывод всей строки по указателю: cout<<argv[i]<<" " названия файлов в папке Debug. Нужно найти информацию, как вообще трактуется * в командной строке. Сейчас ещё в другой среде попробую с mingw.

Добавлено через 6 минут
В другой среде с mingw то же самое. Значит для компилятора mingw звёздочка не просто символ (в отличие от компилятора студии).
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
05.09.2013, 21:17     Передача аргументов через консоль #19
У меня MinGW-builds, не помню, какая версия. Ничего со звёздочкой не делает.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.09.2013, 21:25     Передача аргументов через консоль
Еще ссылки по теме:

Передача аргументов функции C++
C++ Передача аргументов в функцию
Передача аргументов в функцию C++

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

Или воспользуйтесь поиском по форуму:
Nikko12
 Аватар для Nikko12
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 162
05.09.2013, 21:25  [ТС]     Передача аргументов через консоль #20
alsav22, Если написать так, cout<<argv[i]<<" "; у меня выводятся все файлы и папки расположенные на диске F
Yandex
Объявления
05.09.2013, 21:25     Передача аргументов через консоль
Ответ Создать тему
Опции темы

Текущее время: 11:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru