Я нашел два способа передачи аргументов командной строки в массив символов:
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 Возвращает
[MyPrompt]> ./a.out
s1: ./a.out
с2: ./a.out
Какая реализация (s1 или s2) верна? s1 хорош, потому что argv [0] может быть любой длины. s2 требует, чтобы длина argv [0] <256 символов. </p>
Я не понимаю, как / почему s1 должен работать. Я думаю, правая часть s1 должна требоваться во время компиляции, но я думаю, что он генерируется во время выполнения.