Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Аргументы командной строки


Автор: UndeadBlow 17.4.2012, 23:45
Добра всем.
Учусь использовать передачу аргументов командной строки в программу, в плане вроде учиться нечему, но не срабатывает, почему-то искажает, причем вроде не только при выводе, в самой программе тоже не так как надо определяются.
Кодировку пробовал шаманить, не помогает. 
Подскажите, пожалуйста.

Результат при аргументах A B C /n:
user posted image

Сам код, естественно, пробный и максимально примитивен.
Код

int main(int argc,char* argv){
      int i; 
    for (i = 0; i < argc; i++)  cout << "argv[" << i << "] is  " << argv[i] << endl;
    getch();
}

Автор: volatile 18.4.2012, 00:02
Всё теже грабли, как всегда...
В свойствах проекта убрать "юникодный".

Автор: UndeadBlow 18.4.2012, 00:12
Цитата(volatile @ 18.4.2012,  00:02)
Всё теже грабли, как всегда...
В свойствах проекта убрать "юникодный".

Поставил No Set, все так же.
user posted image

Автор: volatile 18.4.2012, 00:19
Цитата(UndeadBlow @  17.4.2012,  23:45 Найти цитируемый пост)
int main(int argc,char* argv)


int main(int argc, char* argv[])


Автор: UndeadBlow 18.4.2012, 00:57
Цитата(volatile @ 18.4.2012,  00:19)
Цитата(UndeadBlow @  17.4.2012,  23:45 Найти цитируемый пост)
int main(int argc,char* argv)


int main(int argc, char* argv[])

Спасибо, помогло.
Вы не могли бы объяснить мне структуру происходящего? Почему необходимы скобки? В обычных функциях у меня всегда нормально массив передавался просто через указатель. И еще, как обращаться теперь к переданным аргументам?
Так вот
Код

if(*argv[1]=='z')cout<<"its Works";

Не реагирует.

Автор: boostcoder 18.4.2012, 01:31
Цитата(UndeadBlow @  18.4.2012,  00:57 Найти цитируемый пост)
Почему необходимы скобки?

потому что это указатель на указатель. т.е. двумерный массив.
можно записать и так: int main(int argc, char **argv);
что, по моему мнению - понятней.

Добавлено через 59 секунд
Цитата(UndeadBlow @  18.4.2012,  00:57 Найти цитируемый пост)
Не реагирует. 

а должен.
и счет начинается с нуля.

Автор: borisbn 18.4.2012, 10:43
Цитата(UndeadBlow @  17.4.2012,  23:45 Найти цитируемый пост)
int main(int argc,char* argv){


мдаааа. мелкомягкие как всегда идут своим путём. такое вообще не должно было скомпилироваться. вернее линковщик должен был не найти "праильную" ф-цию main

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)