Gli array che supportano le stringhe in argv
sono modificabili.
Ma non hai modo di conoscere le loro dimensioni.
Mi vergognerei vedendo il codice che (cerca di) aumentare la dimensione delle stringhe.
#include <stdio.h>
#include <string.h>
// this program may behave erraticaly
int main(int argc, char **argv) {
for (int k = 1; k < argc; k++) {
printf("original argv[%d] is %s\n", k, argv[k]);
}
printf("\n");
for (int k = 1; k < argc; k++) {
strcat(argv[k], " foo"); // add foo to each argv string
printf("first modification to argv[%d] is %s\n", k, argv[k]);
}
printf("\n");
for (int k = argc; k > 1; k--) {
strcat(argv[k - 1], " bar"); // add bar to each argv string
printf("final argv[%d] is %s\n", k - 1, argv[k - 1]);
}
return 0;
}
Sulla mia macchina, chiamando quel programma con one two three
argomenti produce
original argv[1] is one
original argv[2] is two
original argv[3] is three
first modification to argv[1] is one foo
first modification to argv[2] is foo foo
first modification to argv[3] is foo foo
final argv[3] is foo foo bar
final argv[2] is foo foo foo bar bar
final argv[1] is one foo foo foo bar bar bar
Eventuali duplicati di [Quali sono gli argomenti a main() per?] (Http://stackoverflow.com/questions/ 3734111/what-are-the-argomenti-to-main-for) – user007
Non è un valore letterale. Puoi cambiarlo. – BLUEPIXY
So a cosa servono e cosa significano, mi chiedo solo se fossero letterali. –