Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.89/19: Рейтинг темы: голосов - 19, средняя оценка - 4.89
2 / 2 / 0
Регистрация: 07.06.2013
Сообщений: 162
1

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

04.09.2013, 18:46. Показов 3808. Ответов 36
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажи пожалуйста, вот такой код:
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. Заранее спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.09.2013, 18:46
Ответы с готовыми решениями:

Передача 3-dots аргументов через функцию
#include &lt;windows.h&gt; #include &lt;tchar.h&gt; void pr(const TCHAR *format, ...) { TCHAR szBuff;...

передача аргументов
Здравствуйте,объясните пожалуйста,на примерах кода,что означает передача аргументов по ссылке, по...

Передача аргументов в ф-ию
void test(const T&amp; a) {} Это понятно, а что это за запись: void test(T const&amp; a) {} И...

Передача аргументов в функцию
Что сработает быстрее? void Func(const A &amp;a = A(0, 0, 0)) { } или void Func(A a =...

36
погромист
415 / 251 / 30
Регистрация: 27.08.2012
Сообщений: 550
04.09.2013, 19:07 2
Nikko12, вообще не понял о чем ты. Может проблема в том что ты разименововаеш указатель на строку?
cout<<*argv[i]<<" "; ты об этой звездочке?
0
2 / 2 / 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 Для продолжения нажмите любую клавишу . . ."
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
05.09.2013, 03:50 4
Цитата Сообщение от Nikko12 Посмотреть сообщение
если в командной строке написать: f:\\1.exe 1 + 2 - 3 * 4
...
Миниатюры
Передача аргументов через консоль  
0
2 / 2 / 0
Регистрация: 07.06.2013
Сообщений: 162
05.09.2013, 07:25  [ТС] 5
alsav22, Почему же у меня тогда выводится мусор??
0
2 / 2 / 0
Регистрация: 07.06.2013
Сообщений: 162
05.09.2013, 07:31  [ТС] 6
Вот, как получается у меня:
Миниатюры
Передача аргументов через консоль  
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
05.09.2013, 07:43 7
На моём скрине видно, как я файл запускаю из командной строки. А вы как это делаете (на вашем скрине не видно)?
0
2 / 2 / 0
Регистрация: 07.06.2013
Сообщений: 162
05.09.2013, 17:49  [ТС] 8
Виноват, вот:
Миниатюры
Передача аргументов через консоль  
0
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
05.09.2013, 18:00 9
Цитата Сообщение от Nikko12 Посмотреть сообщение
cout<<*argv[i]<<" ";
попробуй

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

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

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

Добавлено через 6 минут
В другой среде с mingw то же самое. Значит для компилятора mingw звёздочка не просто символ (в отличие от компилятора студии).
0
2835 / 1644 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
05.09.2013, 21:17 19
У меня MinGW-builds, не помню, какая версия. Ничего со звёздочкой не делает.
0
2 / 2 / 0
Регистрация: 07.06.2013
Сообщений: 162
05.09.2013, 21:25  [ТС] 20
alsav22, Если написать так, cout<<argv[i]<<" "; у меня выводятся все файлы и папки расположенные на диске F
0
05.09.2013, 21:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.09.2013, 21:25
Помогаю со студенческими работами здесь

Передача аргументов в функцию
Прошу помощи в разборе багов кода. Ошибка при компиляции связана с неверной передачей аргументов...

Передача аргументов функции
В книге Стенли Липпмана C++ Primer дошел до программы, которая выполняет замену слов в одном файле,...

Передача аргументов функции
Всем привет. Писал код не зная, правильно ли это. В общем застрял на составлении прототипов функции...

Передача аргументов в программу
Хочу передать аргументы в программу, если использовать такую сигнатуру: int _tmain(int argc,...


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

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