Решено: передача переменных через командную строку

Модератор: Модераторы разделов

Dmitry1983
Сообщения: 119
ОС: осваиваю gentoo

Решено: передача переменных через командную строку

Сообщение Dmitry1983 »

Никак не могу понять почему не работает так, как задумано, вот такой код:

Код: Выделить всё

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#include <iostream>
#include <cstdlib>

using namespace std;

int main(int argc, char *argv[])
{
  if (argv[1]=="enc") cout <<550; //например
  cout <<argv[1]

  return EXIT_SUCCESS;
}


Ввожу в консоли

Код: Выделить всё

test enc

Получаю enc

А хотел 550enc

Где косяк?
Спасибо сказали:
sergio
Сообщения: 436
Статус: Интересующийся новичок
ОС: Debian GNU/Linux 4 & 5

Re: Решено: передача переменных через командную строку

Сообщение sergio »

Dmitry1983 писал(а):
25.09.2007 13:58
Никак не могу понять почему не работает так, как задумано, вот такой код:

Где косяк?

std::strcmp потому что надо использовать, а не указатели сравнивать...

argv [1], как и "строка", имеют тип char*/const char* - указатель...
Debian GNU/Linux 4 -- AMD Athlon64 3000+ / Asus 7600GS -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
Спасибо сказали:
Dmitry1983
Сообщения: 119
ОС: осваиваю gentoo

Re: Решено: передача переменных через командную строку

Сообщение Dmitry1983 »

Код: Выделить всё

int main(int argc, char *argv[])
{
  const char* e="enc";
  if (strcmp(argv[1],e)) cout <<550; //тут не хочет

  if (argv[2]="test") cout <<"test"; //тут отрабатывает
  return EXIT_SUCCESS;
}

Т.е. не отрабатывает только первый параметр, 2й и следующие вполне себе сравниваются
Спасибо сказали:
sergio
Сообщения: 436
Статус: Интересующийся новичок
ОС: Debian GNU/Linux 4 & 5

Re: Решено: передача переменных через командную строку

Сообщение sergio »

Dmitry1983 писал(а):
25.09.2007 14:17

Код: Выделить всё

int main(int argc, char *argv[])
      if (argv[2]="test") cout <<"test"; //тут отрабатывает
}

Т.е. не отрабатывает только первый параметр, 2й и следующие вполне себе сравниваются

А он не сравнивается, он у вас там приваивается. Присвоение любого ненулевого указателя в условии конструкции if будет истинно.
Внимательнее надо быть. :)

Введите вторым аргументом не "тест" а что-нибудь другое - и сравните результаты. =)
Debian GNU/Linux 4 -- AMD Athlon64 3000+ / Asus 7600GS -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
Спасибо сказали:
Dmitry1983
Сообщения: 119
ОС: осваиваю gentoo

Re: Решено: передача переменных через командную строку

Сообщение Dmitry1983 »

sergio писал(а):
25.09.2007 14:23
Внимательнее надо быть. :)

Введите вторым аргументом не "тест" а что-нибудь другое - и сравните результаты. =)

Да, сорри. :)
Так что с главным вопросом, почему не сравниваются
Спасибо сказали:
sergio
Сообщения: 436
Статус: Интересующийся новичок
ОС: Debian GNU/Linux 4 & 5

Re: Решено: передача переменных через командную строку

Сообщение sergio »

Dmitry1983 писал(а):
25.09.2007 14:28
Так что с главным вопросом, почему не сравниваются

Гыг, так strcmp возвращает ноль если строки равны. :happy:
Так что
if (! strcmp(...)) do ... ;
ну или
if (0 == strcmp(...)) do ... ;
если строже...

Я правильно понял в чем был "главный вопрос"? =)
Debian GNU/Linux 4 -- AMD Athlon64 3000+ / Asus 7600GS -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
Спасибо сказали:
Dmitry1983
Сообщения: 119
ОС: осваиваю gentoo

Re: Решено: передача переменных через командную строку

Сообщение Dmitry1983 »

Тьфу... :)
Спасибо!
Спасибо сказали: