Ich habe zwei Möglichkeiten gefunden, um Befehlszeilenargumente in ein Zeichenarray zu übertragen:
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);
}
Kompiliert mit dem IBM xlc-Compiler auf einem AIX-System Rückgabe
[MeinPrompt]> ./a.out
s1: ./a.out
s2: ./a.out
Welche Implementierung (s1 oder s2) ist richtig? s1 ist gut, weil argv[0] beliebig lang sein kann. s2 erfordert, dass die Länge von argv[0] < 256 Zeichen ist.
Ich verstehe nicht, wie/warum s1 funktionieren sollte. I denken die rechte Seite von s1 sollte zur Kompilierzeit erforderlich sein, aber ich denken sie wird zur Laufzeit generiert.