аргументы для функции main()
До сегодняшнего дня писал программы на Си с таким применением функции main: int main(void)
. Но сегодня решил расширить свой кругозор и написал уже такую функцию: int main(int argc, char* argv[])
. Тут передача аргументов согласно статье в которой я это вычитал работала как положено.
Я решил проверить как будет работать программа если я попытаюсь передать каждый аргумет по отдельности. Вот что получилось:
Мой код:
#include <stdio.h>
int main(int argc, char* first_arg, char* name, char* name1) {
printf("Argument:\n%s\n%s\n%s", first_arg ,name, name);
return 0;
}
Результат на вызов ./start.out некоторая строка здесь
:
Argument:
~�&{�
��&{�
��&{�
Теперь то же самое только с массивами аргументов.
Мой код:
#include <stdio.h>
int main(int argc, char* first_arg[1], char* name[1], char* name1[1]) {
printf("Argument:\n%s\n%s\n%s", first_arg[1] ,name[1], name[1]);
return 0;
}
Результат на вызов ./start.out некоторая строка здесь
:
Argument:
некоторая
SESSION_MANAGER=local/reiji-Legion-5-15IMH6:@/tmp/.ICE-unix/2497,unix/reiji-Legion-5-15IMH6:/tmp/.ICE-unix/2497
SESSION_MANAGER=local/reiji-Legion-5-15IMH6:@/tmp/.ICE-unix/2497,unix/reiji-Legion-5-15IMH6:/tmp/.ICE-unix/2497
Почему программа в формате char* argv[]
принимает аргументы правильно, но если я разделю принятие аргументов на две отдельные переменные типа char* argv1
и char* argv2
- то аргументы я уже не получу?
Откуда берется SESSION_MANAGER=local/reiji-Legion-5-15IMH6:@/tmp/.ICE-unix/2497,unix/reiji-Legion-5-15IMH6:/tmp/.ICE-unix/2497
и что это вообще такое?
Как отлаживать подобного рода программы - ведь отладчик запускает отлаживаемую программу без аргументов?