главная функция c ++, значение argc странно, если аргументы командной строки содержат *

Очень простой кусок кода C ++, подобный этому:

int main(int argc, char **argv){
std::cout << "argc: " << argc << std::endl;
}

Составлено с g++ -o hello hello.cpp

  • когда бегать с ./hello u, вывод argc: 2;
  • когда бегать с ./hello u +, вывод argc: 3;
  • когда бегать с ./hello u *, вывод argc: 26, Зачем 26?

0

Решение

Расширение оболочки. * расширяется оболочкой во все файлы в текущем каталоге, которых, как представляется, 24, и передает их в качестве отдельных аргументов вашей программе.

Поскольку это похоже на вызов из оболочки UNIX, используйте

./hello u \*

или же

./hello u '*'
10

Другие решения

Вам нужно передать то, что интерпретирует оболочка как специальные символы в ' ',

Таким образом, надлежащий вызов командной строки должен был ./hello u '*'

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector