Я нашел два способа передачи аргументов командной строки в массив символов:
int main (int argc, char **argv)
{
const char *s1 = argv[0];
char s2[256];
strcpy(s2, argv[0]);
printf("s1: %s\ns2: %s\n\n", s1, s2);
}
Скомпилировано с помощью компилятора IBM xlc в системе AIX.
[Моя подсказка]> ./a.out
s1: ./a.out
s2: ./a.out
Какая реализация (s1 или s2) правильная? s1 хорош, потому что argv[0] может быть любой длины. s2 требует, чтобы длина argv[0] не превышала 256 символов.
Я не понимаю, как/почему должен работать s1. Я думаю, что правая часть s1 должна требоваться во время компиляции, но я думаю, что она генерируется во время выполнения.