Also habe ich diese Zuweisung (Eingabe einer Zeichenfolge und es wird die Anzahl der Zeichenfolgen anzeigen), wo ich erklären muss, warum die Werte argv [0] und argv [3] ändern. Also, wenn Sie durch das Programm gehen (meine String-Eingabe ist "run wie jetzt braune Kuh" argv [0] beginnt als mein Verzeichnis-Ordner ("/ home/013/w/wn /% $% $% #%/Assignment4/p2 "). Und dann beginnt argv [3] als" jetzt ". Ich verstehe nicht, warum diese Variablen sich ändern, wenn das Programm läuft, weil die" now "Zeichenfolge in argv [2] sein sollte, oder? Programm kompiliert das argv [] Array alles am Ende entspricht, aber warum nicht am Anfangargv in C++ - Bereinigung
Hier ist der Code:
#include <stdio.h>
/* print a given string and a number in a pre-determined format. */
void
print_string(int num, char* string)
{
printf("String '%d' - '%s'\n", num, string);
}
int
main(int argc, char* argv[])
{
int i;
/* check for command line arguments */
if (argc < 2) { /* 2 - 1 for program name (argv[0]) and one for a param. */
printf("Usage: %s [<string> ...]\n", argv[0]);
return(1);
}
/* loop over all strings, print them one by one */
for (argc--,argv++,i=0 ; argc > 0; argc--,argv++,i++) {
print_string(i, argv[0]); /* function call */
}
printf("Total number of strings: %d\n", i);
return 0;
}
'argv [0]' ist der Dateiname zum Aufruf des Programms, die eigentlichen Kommandozeilenargumente sind in 'argv [1 ...]' –
@BenVoigt bezwingen Sie mich dazu – Nacho
Sie ändern sich, während das Programm läuft weil Sie tatsächlich Ihre Parameter ändern ('argc -, argv ++'), was ein Stil ist, der im Allgemeinen verpönt ist. –